java无法通过JDBC连接到SQL Server。未找到适合jdbc:sqlserver://
我只是想在HTTP Servlet程序中使用SQL Server数据库,但我的程序似乎无法连接到数据库。它给了我以下错误:
No suitable driver found for jdbc:sqlserver://localhost:1433;databaseName=Bookyard;integratedSecurity=true;
这是我的连接方式
package practice.bookyard.server.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Database {
public static Connection getConnection() {
String url = "jdbc:sqlserver://(LocalDb)\\MSSQLLocalDB:1433;databaseName=Bookyard;integratedSecurity=true;";
Connection connection = null;
try {
connection = DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
}
我之前的服务器名为localhost:1433
,但我将其更改为SQL Server实例名(LocalDb)\\MSSQLLocalDB:1433
,但它似乎仍然使用了旧名称
此外,我不确定在连接到SQL Server localdb时如何提供正确的连接字符串
我正在使用Eclipse for Java EE、Mars 2,我从this website下载了Microsoft JDBC驱动程序for SQL 6.0
我运行了安装,解压缩了结果文件夹的内容。然后,我添加了sqljdbc42。jar文件到构建路径,因为我的目标是JDK 1.8
更新
根据Thrarry Wombat的建议,我还添加了sqljdbc42的路径。jar文件到我的类路径
然而,我仍然得到同样的错误
我非常确信这是一个反射问题,因为类型加载器无法从我的连接字符串解析驱动程序类型。也就是说,我使用的连接字符串语法是错误的
我将我的连接字符串改为:
String url = "jdbc:sqlserver://localhost:1433;
instance=(LocalDb)\\MSSQLLocalDB;
databaseName=Bookyard;integratedSecurity=true;";
然而,我仍然不仅得到相同的错误,而且我收到的异常消息仍然有我的旧连接字符串。所以,很明显,也有一些缓存正在进行,我只是不知道在哪里。谁在缓存我的连接字符串?如何刷新/清除该缓存
如果我正在连接到localdb,而不是在主SQL Server实例上,您能告诉我如何提供SQL Server实例名称吗
# 1 楼答案
你可以像下面这样做
注意:然而,新版本的jdbc驱动程序并不需要使用类手动加载驱动程序类。福奈姆