【问题标题】:Driver name for SQL Server in JavaJava 中 SQL Server 的驱动程序名称
【发布时间】:2019-10-17 16:56:45
【问题描述】:

我正在尝试将 SQL Server 与我的 Java 应用程序连接,但我不知道 Class.forName(driverName); 中提供的驱动程序类名称;

我正在使用 Eclipse,我已经在我的项目中导入了 JAR 文件,并将它添加到了构建路径中。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class Demo {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement stmt = null;
        String query = "CREATE TABLE student("
                + "id       INT     PRIMARY KEY,"
                + " name    VARCHAR(20)"
                + ");";

        try {
            Class.forName("WHAT SHOULD I WRITE HERE ?");
            conn = DriverManager.getConnection("jdbc:sqlserver://lakshya:1433");
            System.out.println("Conenction established.");

            stmt = conn.prepareStatement(query);
            stmt.executeQuery();

            System.out.println("student table created..");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我无法进一步编译代码,因为我不知道驱动程序名称。

【问题讨论】:

标签: java sql-server jdbc


【解决方案1】:

作为documented,类名是com.microsoft.sqlserver.jdbc.SQLServerDriver

但是,对于自 2006 年以来生产的任何 JDBC 驱动程序(适用于 JDBC 4 或更高版本),您无需在这样的应用程序中使用 Class.forName 加载驱动程序。如果驱动程序在初始类路径上,它将自动加载。

只有在更复杂的类加载情况下(例如 Web 应用程序),您可能需要显式加载,但在这些类型的应用程序中,您通常会配置 DataSource 而不是使用 DriverManager

简而言之,只要在运行应用程序时类路径中有 Microsoft SQL Server JDBC jar,您应该能够删除 Class.forName("WHAT SHOULD I WRITE HERE ?"); 行并且您的应用程序将正常工作。

另外请务必查阅Microsoft SQL Server JDBC documentation 的其余部分,因为您当前的 JDBC url 不完整,因为它不包含数据库名称。

【讨论】:

    【解决方案2】:

    您下载的文件(zip 或 tar.gz)将包含一个 jar 文件。在其中,您会找到一个名为“META-INF/services/java.sql.Driver”的文件,其中包含您的驱动程序类。

    正如Rotteveel 先生所说,不过,您可能不需要明确指定驱动程序。

    【讨论】:

      猜你喜欢
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2011-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多