2017-02-10 98 views
0

我正在发现JDBC没有合适的驱动程序:微软:SQLSERVER异常,当我注释掉第一行。没有合适的驱动程序SQLSERVER例外无的Class.forName()

我使用JDBC 4.1和https://stackoverflow.com/a/8053125/1379734解释Class.forName()方法是没有必要的。我的代码有什么问题?

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); 
con = java.sql.DriverManager.getConnection(getConnectionUrl(), userName, password); 
+3

那你不使用JDBC4兼容的驱动程序(或者至少是不遵守它应该做的)。事实上,您拥有JDBC 4.x附带的JDK并不意味着您拥有的驱动程序会自动使用适用于JDBC 4.x的驱动程序。您也必须使用正确的驱动程序。 –

+0

听起来您正在使用无效的URL或非常旧的驱动程序,SQL Server的正确JDBC URL以'jdbc:sqlserver:'而不是'jdbc:microsoft:sqlserver'开头。另请参阅https://docs.microsoft.com/en-us/sql/connect/jdbc/building-the-connection-url –

+0

您使用的是什么版本的sql驱动程序?一个兼容的版本应该有一个META-INF \ services \ java.sql.Driver文件。 –

回答

0

当您使用Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");和与jdbc:microsoft:sqlserver开始JDBC URL表明您使用的是+/- 17岁的Microsoft SQL Server 2000 JDBC驱动程序它工作的事实。此驱动程序早于JDBC 4,因此它不支持通过/META-INF/services/java.sql.Driver驱动程序自动加载。

由于SQL Server 2005的JDBC驱动程序,正确的类名是com.microsoft.jdbc.sqlserver.SQLServerDriver(注意:jdbcsqlserver交换的地方)和URL前缀改为jdbc:sqlserver:(见this blogpost)。我相信JDBC 4自动加载是在SQL Server 2008 JDBC驱动程序中添加的。有关更多信息,请参阅Microsoft JDBC Driver for SQL Server

如果你想利用驱动程序自动加载的,您需要将驱动程序升级到新的版本(最新最好)和更改配置。

见:https://github.com/Microsoft/mssql-jdbcMicrosoft Download Center

相关问题