如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]
Posted
技术标签:
【中文标题】如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]【英文标题】:How to fix: No suitable driver found for jdbc:sqlserver [duplicate] 【发布时间】:2019-04-20 10:11:11 【问题描述】:我正在尝试连接到与应用程序在同一台计算机上运行的 MS SQL Server 数据库,但我不断收到错误消息:
找不到合适的驱动程序 jdbc:sqlserver://localhost:1433;database=SQLTEST;user=TEST;password=1234567890;encrypt=true;trustServerCertificate=false;loginTimeout=30;
我正在运行 MS SQL Server 2017 和 JDK1.8.x。
我做的第一件事是使用 T-SQL 在 SSMS 中通过以下方式创建用户:
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>
随后添加和更改 Microsoft 给出的示例代码(注意这应该成为 JAX-RS REST-API,这就是注释存在的原因):
@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;
运行此命令会导致本文开头给出的错误。我是忘记了什么还是做错了什么?
【问题讨论】:
你不应该在Web应用程序中直接使用DriverManager
,而是使用带有连接池的数据源(例如Apache DBCP、HikariCP等)。问题是,如果驱动程序部署在 Web 应用程序中,您需要显式加载驱动程序(自动驱动程序加载仅适用于主类路径上的驱动程序,不适用于 Web 应用程序特定类路径上的驱动程序)。
【参考方案1】:
看起来类似于这个问题:
java.sql.SQLException: No suitable driver found for jdbc:sqlserver
看起来你没有 Class.forName("xxxx");在 try 语句中的 DriverManager.getConnection 部分之前。
【讨论】:
使用这些较新版本的 jdbc,7.2.2.jr8,我认为您不再需要使用 Class.forName。我很惊讶这被认为是正确的答案。以上是关于如何修复:找不到适合 jdbc:sqlserver 的驱动程序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
java.sql.SQLException: 找不到适合 jdbc:sqlserver 的驱动程序... (intellij, maven)
如何修复:“找不到适合 jdbc:mysql://localhost/dbname 的驱动程序”
在其他电脑上 java.sql.SQLException:没有找到适合 jdbc:sqlserver 的驱动程序