java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver
在我尝试运行这个程序时,出现了这个异常。这是微软的一个示例程序。我已经将sqljdbc4.jar添加到了netbeans的类路径中,用于编译和运行,通过项目属性进行设置。我还通过使用下面的导入语句测试了该类是否可以找到 - 在编译过程中没有错误,所以肯定找到了jar包。
这可能与sqldbc4.jar引用的某个dll文件或一些sql dll文件有关吗?
以下是精确的异常信息,以及几乎一样的代码(密码除外)。
异常:
run: java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase 在getConnection()中的错误跟踪:No suitable driver found for jdbc:microsoft:sqlserver://localhost:1433;databaseName=HealthCareDatabase 错误:没有活动连接 at java.sql.DriverManager.getConnection(DriverManager.java:602) at java.sql.DriverManager.getConnection(DriverManager.java:185) at javaapplication1.Connect.getConnection(Connect.java:35) at javaapplication1.Connect.displayDbProperties(Connect.java:50) at javaapplication1.JavaApplication1.main(JavaApplication1.java:23) BUILD SUCCESSFUL (total time: 1 second)
代码:
package javaapplication1; import com.microsoft.sqlserver.jdbc.SQLServerDriver; import java.*; public class Connect { private java.sql.Connection con = null; private final String url = "jdbc:microsoft:sqlserver://"; private final String serverName = "localhost"; private final String portNumber = "1433"; private final String databaseName = "HealthCareDatabase"; private final String userName = "larry"; private final String password = "xxxxxxx"; // 构造函数 public Connect() { } private String getConnectionUrl() { return url + serverName + ":" + portNumber + ";databaseName=" + databaseName ; } private java.sql.Connection getConnection() { try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password); if (con != null) { System.out.println("连接成功!"); } } catch (Exception e) { e.printStackTrace(); System.out.println("在getConnection()中的错误跟踪:" + e.getMessage()); } return con; } public void displayDbProperties() { java.sql.DatabaseMetaData dm = null; java.sql.ResultSet rs = null; try { con = this.getConnection(); if (con != null) { dm = con.getMetaData(); System.out.println("驱动程序信息"); System.out.println("\t驱动程序名称:" + dm.getDriverName()); System.out.println("\t驱动程序版本:" + dm.getDriverVersion()); System.out.println("\n数据库信息 "); System.out.println("\t数据库名称:" + dm.getDatabaseProductName()); System.out.println("\t数据库版本:" + dm.getDatabaseProductVersion()); System.out.println("可用目录"); rs = dm.getCatalogs(); while (rs.next()) { System.out.println("\t目录:" + rs.getString(1)); } rs.close(); rs = null; closeConnection(); } else { System.out.println("错误:没有活动连接"); } } catch (Exception e) { e.printStackTrace(); } dm = null; } private void closeConnection() { try { if (con != null) { con.close(); } con = null; } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) throws Exception { Connect myDbTest = new Connect(); myDbTest.displayDbProperties(); }
}
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver 是因为找不到合适的驱动程序引起的。
解决方法:
1. 确保已经将sqljdbc4.jar添加到项目中,该jar文件提供了对JDBC 4.0的支持。
2. 检查项目中是否同时添加了sqljdbc.jar,如果添加了,则需要删除该jar文件。
3. 将 Class.forName(driver).newInstance(); 替换为 DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver()); 这样可以注册驱动程序。
4. 如果在Maven中使用,需要在pom.xml中添加依赖 'com.microsoft.sqlserver'。
这样就可以解决 java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver 的问题了。
原因:出现这个问题的原因是因为URL和Class name设置错误,导致无法找到合适的驱动程序。
解决方法:需要将URL设置为jdbc:sqlserver://server:port;DatabaseName=dbname
,并将Class name设置为com.microsoft.sqlserver.jdbc.SQLServerDriver
。此外,需要下载并安装Microsoft SQL Server JDBC Driver 2.0。旧版本的驱动程序会导致混淆,因此需要使用新版本的驱动程序,并确保URL的前缀正确为jdbc:sqlserver://。
一些网站上的URL设置错误,将URL写成了'jdbc:microsoft:sqlserver://server:port;DatabaseName=dbname ',而实际上应该是'jdbc:sqlserver://server:port;DatabaseName=dbname '。
至于驱动程序应该放在哪里,文章中没有提及。
此外,驱动程序的下载链接已经失效。
java.sql.SQLException: No suitable driver found for jdbc:microsoft:sqlserver 是由于没有找到适合的驱动程序造成的。解决方法是通过在POM文件中添加以下依赖项来解决问题:
com.microsoft.sqlserver mssql-jdbc 7.0.0.jre8
然后使用以下代码进行连接:
String connectionUrl = "jdbc:sqlserver://localhost:1433;databaseName=master;user=sa;password=your_password"; try { System.out.print("Connecting to SQL Server ... "); try (Connection connection = DriverManager.getConnection(connectionUrl)) { System.out.println("Done."); } } catch (Exception e) { System.out.println(); e.printStackTrace(); }
点击此链接this可以查找其他类型的CRUD查询。
适用于Java 8应用程序的驱动程序是7.0.0.jre8版本,而不是8.2.2.jre11版本,后者会导致连接问题。