Java 如何修复:未找到适合jdbc:sqlserver的驱动程序
我正在尝试连接到与应用程序在同一台计算机上运行的MS SQL Server数据库,但不断收到错误: 找不到合适的驱动程序 jdbc:sqlserver://localhost:1433;数据库=SQLTEST;用户=测试;密码=1234567890;加密=真;trustServerCertificate=false;loginTimeout=30 我正在运行MS SQL Server 2017和JDK1.8.x 我做的第一件事是在SSMS中使用T-SQL以以下方式创建用户:Java 如何修复:未找到适合jdbc:sqlserver的驱动程序,java,sql-server,jdbc,Java,Sql Server,Jdbc,我正在尝试连接到与应用程序在同一台计算机上运行的MS SQL Server数据库,但不断收到错误: 找不到合适的驱动程序 jdbc:sqlserver://localhost:1433;数据库=SQLTEST;用户=测试;密码=1234567890;加密=真;trustServerCertificate=false;loginTimeout=30 我正在运行MS SQL Server 2017和JDK1.8.x 我做的第一件事是在SSMS中使用T-SQL以以下方式创建用户: USE SQLTES
USE SQLTEST
CREATE ROLE TEST
GRANT SELECT, INSERT ON SCHEMA :: [dbo] TO TEST
CREATE LOGIN TEST_LOGIN WITH PASSWORD = '1234567890'
CREATE USER USER_TEST FROM LOGIN TEST_LOGIN
ALTER ROLE TEST ADD MEMBER USER_TEST
然后,我使用Maven将驱动程序添加到pom.xml文件中的项目中:
<!-- https://mvnrepository.com/artifact/com.microsoft.sqlserver/mssql-jdbc -->
<dependency>
<groupId>com.microsoft.sqlserver</groupId>
<artifactId>mssql-jdbc</artifactId>
<version>7.2.2.jre8</version>
</dependency>
运行此命令会导致本文开头给出的错误。我是忘记了什么还是做错了什么?与此问题类似:
看起来你没有课。forName(“xxxx”);在try语句中的DriverManager.getConnection部分之前。您不应该在web应用程序中直接使用
DriverManager
,而应该使用带有连接池的数据源(例如Apache DBCP、HikariCP等)。问题是,如果驱动程序部署在web应用程序中,则需要显式加载驱动程序(自动加载驱动程序只适用于主类路径上的驱动程序,而不适用于web应用程序特定的类路径)。对于这些较新版本的jdbc 7.2.2.jr8,我认为您不再需要使用Class.forName。我很惊讶这被认为是正确的答案。
@Path("t2")
public class T2 {
@GET
public String show() {
String r = "";
String connectionUrl =
"jdbc:sqlserver://localhost:1433;"
+ "database=SQLTEST;"
+ "user=TEST;"
+ "password=1234567890;"
+ "encrypt=true;"
+ "trustServerCertificate=false;"
+ "loginTimeout=30;";
try (Connection connection = DriverManager.getConnection(connectionUrl);) {
// Code here.
}
// Handle any errors that may have occurred.
catch (SQLException e) {
e.printStackTrace();
r = e.getMessage();
}
return r;
}
}