在代码上获取ClassNotFoundException:"Class.forName("com.microsoft.sqlserver.jdbc.SqlServerDriver");"

use*_*377 4 java classpath sqljdbc classnotfoundexception

这是我的第一个Java应用程序,我对JavaNetBeans完全缺乏经验.

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

右键单击Project-> Select Properties->在左侧单击Libraries-> Compile选项卡 - 单击Add 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)
Run Code Online (Sandbox Code Playgroud)

这是代码

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

Jes*_*per 10

根据这个页面,该类被调用SQLServerDriver而不是SqlServerDriver.案例很重要!

所以,试试:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
Run Code Online (Sandbox Code Playgroud)

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