Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何修复:未找到适合jdbc:sqlserver的驱动程序_Java_Sql Server_Jdbc - Fatal编程技术网

Java 如何修复:未找到适合jdbc:sqlserver的驱动程序

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

我正在尝试连接到与应用程序在同一台计算机上运行的MS SQL Server数据库,但不断收到错误:

找不到合适的驱动程序 jdbc:sqlserver://localhost:1433;数据库=SQLTEST;用户=测试;密码=1234567890;加密=真;trustServerCertificate=false;loginTimeout=30

我正在运行MS SQL Server 2017和JDK1.8.x

我做的第一件事是在SSMS中使用T-SQL以以下方式创建用户:

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;
    }
}