【问题标题】:Getting ClassNotFoundException on code: "Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");"在代码上获取 ClassNotFoundException:“Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");"
【发布时间】:2026-01-23 08:00:02
【问题描述】:

这是我的第一个 Java 应用程序,我对 JavaNetBeans 完全没有经验。

我已经尝试连接到 sql 并获取一些记录 2 天。问题是关于 jdbc 驱动程序,让我解释一下。我已经下载了 sqljdbc 驱动程序,然后按照以下步骤操作:

右键单击项目->选择属性->在左侧单击库->在编译选项卡下-单击添加 Jar/Folder 按钮并选择 sqljdbc4.jar 文件。那应该没问题吧?

然后我写了这段代码但是我无法摆脱这个异常:

  Exception in thread "main" java.lang.ClassNotFoundException: 
  com.microsoft.sqlserver.jdbc.SqlServerDriver
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:190)
at javaapplication1.JavaApplication1.main(JavaApplication1.java:30)

这是代码

public static void main(String[] args) throws ClassNotFoundException, SQLException {
    String url = "jdbc:sqlserver://.\\SQLEXPRESS;databaseName=Northwind; Integrated Security = SSPI ";

    Connection con = null;
    Statement stmt = null;

    ResultSet rs = null;
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");

        con = DriverManager.getConnection(url);
        String sql = "Select Top 3 from * person.Contact";
        stmt = con.createStatement();
        rs = stmt.executeQuery(sql);
        while (rs.next()) {
            System.out.println(rs.getString(1));
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

【问题讨论】:

    标签: java classpath classnotfoundexception sqljdbc


    【解决方案1】:

    根据this page,该类称为SQLServerDriver,而不是SqlServerDriver。案例很重要!

    那么,试试吧:

    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    

    请注意,对于较新版本的 JDBC,无需使用 Class.forName(...) 显式加载驱动程序类。我链接到的页面明确说明您不必这样做。因此,您可以删除整行,然后它应该可以工作。

    【讨论】:

    • 我这几天一直在解决这个问题,在不同的论坛上启动了 mybe 10 线程并将我的机器格式化了 3 次,我能说什么谢谢你,非常感谢 Jesper
    • 我也有同样的问题。但删除这条线后,我有另一个错误,找不到合适的驱动程序。你知道原因吗?
    • @ConductedClever 如果这使您的应用程序无法运行,您为什么要删除该行? “找不到合适的驱动程序”错误也可能意味着您的 JDBC URL 不正确。 (运行应用程序时,JDBC 驱动程序 JAR 也必须在类路径中)。
    • @Jesper,我仍然遇到异常,即使我在输入类名时已经注意区分大小写。我将在下一条评论中发布我的代码:
    • 导入 java.sql.*;公共类 DatabaseConnectivity { public static void main(String[] args) 抛出 SQLException,ClassNotFoundException { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");连接 m_Connection = DriverManager.getConnection("jdbc:sqlserver://ip_address:1433;DatabaseName=DB_Name", "username", "password"); System.out.println("连接成功!!!");语句 m_Statement = m_Connection.createStatement();字符串查询 = "SELECT * FROM CI_Item"; } }
    【解决方案2】:

    Java:NetBeans 中与 MSSQL 的 JDBC 连接

    步骤

    1. 从以下位置下载 JDBC: https://www.microsoft.com/en-in/download/details.aspx?id=11774
    2. 运行 sqljdbc__enu.exe - 在 %Program 中解压此 zip 文件 具有默认目录的文件 (x86)%:Microsoft JDBC DRIVER 对于 SQL Server
    3. 在 NetBeans 中创建新项目
    4. 右键单击项目-选择属性-选择库 从左侧面板 - 单击添加 JAR/文件夹按钮 - 选择您的 JAR 文件 并打开 - 好的
    5. 打开 Sql Server 配置管理器 - 选择协议 Sql Server 网络配置下的 SQLEXPRESS - 右键单击 TCP/IP - 选择属性 - 将启用更改为是 - 单击 IP 地址 - 转到 IPAll - 将 TCP 动态端口更改为 49169 和 TCP 端口到 1433 - 应用 - 确定 - 重新启动计算机
    6. 打开运行并键入 Services.msc - 启动 SQL Server Browser
    7. 转到项目并为数据库连接编写代码。

    本地数据库连接代码:

    String url = "jdbc:sqlserver://YOUR PC NAME;instanceName=SQLEXPRESS;DatabaseName=dbname;integratedSecurity=true";
    
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    Connection myCon = DriverManager.getConnection(url);
    
    Statement myStmt = myCon.createStatement();
    ResultSet myRs = myStmt.executeQuery("select * from table name");
    

    【讨论】:

      【解决方案3】:

      我有关于这个问题的更新。

      1. 转到this链接,找到您兼容的JDBC驱动程序(我下载了6.0版本)。
      2. 在你下载的文件中找到合适的jar(我用的是jre7\sqljdbc41.jar)。
      3. 对于 Intellij Idea,请按 Ctrl+Shift+Alt+S 并打开项目结构,然后在依赖项部分添加您的 jar 文件。

      我希望它也对你有用。

      【讨论】: