idea 中无法连接 sql server 数据库,报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

这篇具有很好参考价值的文章主要介绍了idea 中无法连接 sql server 数据库,报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;

public class Main {
    private static Connection dbConn = null;

    public static void main(String[] args) {
        String dbURL = "jdbc:sqlserver://localhost:1433;database=sjkjc;";//这里输入自己的数据库名称(即将Stu改为你自己的数据库名称)其余都可以不做修改
        try {
            //1.加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("加载驱动成功!");
            //2.连接
            dbConn = DriverManager.getConnection(dbURL, "sa", "123");//这里的密码改为第一步你所修改的密码,用户名一般就为"sa"
            System.out.println("连接数据库成功!");
            String sql="select Sname from Student";//这个语句就是表的查询语句,按照你所建的表修改名称
            PreparedStatement statement=null;
            statement=dbConn.prepareStatement(sql);
            ResultSet res=null;
            res=statement.executeQuery();
            while(res.next()){
                String title=res.getString("sname");
                System.out.println(title);
            }
        }catch(Exception e) {
            e.printStackTrace();
            System.out.println("连接数据库失败!");
        }

    }
}

上面的代码报错如下:

D:\JDK\jdk-11.0.18\bin\java.exe "-javaagent:D:\idea\IntelliJ IDEA 2023.1\lib\idea_rt.jar=54456:D:\idea\IntelliJ IDEA 2023.1\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\张艺达\IdeaProjects\untitled\out\production\untitled;D:\JDBC\sqljdbc_12.2\chs\mssql-jdbc-12.2.0.jre11.jar Main
加载驱动成功!
com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:90f72b77-2a96-4ca6-b51f-995cd5499215
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:3937)
	at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1950)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:3456)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:3077)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:2919)
	at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1787)
	at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1229)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:228)
	at Main.main(Main.java:15)
Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:131)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:369)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:312)
	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:307)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)
	at java.base/sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:392)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:478)
	at java.base/sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:456)
	at java.base/sun.security.ssl.TransportContext.dispatch(TransportContext.java:199)
	at java.base/sun.security.ssl.SSLTransport.decode(SSLTransport.java:172)
	at java.base/sun.security.ssl.SSLSocketImpl.decode(SSLSocketImpl.java:1383)
	at java.base/sun.security.ssl.SSLSocketImpl.readHandshakeRecord(SSLSocketImpl.java:1296)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:416)
	at java.base/sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:388)
	at com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1839)
	... 8 more
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:439)
	at java.base/sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:306)
	at java.base/sun.security.validator.Validator.validate(Validator.java:264)
	at java.base/sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:313)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:233)
	at java.base/sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:110)
	at com.microsoft.sqlserver.jdbc.HostNameOverrideX509TrustManager.checkServerTrusted(SQLServerTrustManager.java:86)
	at java.base/sun.security.ssl.AbstractTrustManagerWrapper.checkServerTrusted(SSLContextImpl.java:1510)
	at java.base/sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:638)
	... 20 more
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
	at java.base/sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
	at java.base/java.security.cert.CertPathBuilder.build(CertPathBuilder.java:297)
	at java.base/sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:434)
	... 28 more
连接数据库失败!

进程已结束,退出代码0

在dbURL中把;trustServerCertificate=true加上后就没有报错了

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.*;

public class Main {
    private static Connection dbConn = null;

    public static void main(String[] args) {
        String dbURL = "jdbc:sqlserver://localhost:1433;database=sjkjc;trustServerCertificate=true";//这里输入自己的数据库名称(即将Stu改为你自己的数据库名称)其余都可以不做修改
        try {
            //1.加载驱动
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println("加载驱动成功!");
            //2.连接
            dbConn = DriverManager.getConnection(dbURL, "sa", "123");//这里的密码改为第一步你所修改的密码,用户名一般就为"sa"
            System.out.println("连接数据库成功!");
            String sql="select Sname from Student";//这个语句就是表的查询语句,按照你所建的表修改名称
            PreparedStatement statement=null;
            statement=dbConn.prepareStatement(sql);
            ResultSet res=null;
            res=statement.executeQuery();
            while(res.next()){
                String title=res.getString("sname");
                System.out.println(title);
            }
        }catch(Exception e) {
            e.printStackTrace();
            System.out.println("连接数据库失败!");
        }

    }
}

无报错

因为sql server在jdbc连接的时候需要一定的安全验证,只需要在dbURL中把;trustServerCertificate=true加上后令其跳过就行了文章来源地址https://www.toymoban.com/news/detail-516890.html

到了这里,关于idea 中无法连接 sql server 数据库,报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SQL Server使用登录名连接数据库报错:18456

    错误: 18456 是因密码或用户名错误而使身份验证失败,如果用户名密码正确,则该登录名没有连接数据库引擎权限,登录权限也被无情剥夺了,开启服务器【SQL Server身份验证模式】即可 以windows验证模式进入数据库管理器 右键【服务器】选择【属性】 修改服务器身份验证【

    2024年02月11日
    浏览(52)
  • (解决方案) Visual Studio 2019 连接 SQL Server 2019 数据库时,数据库版本为904无法打开,此服务器支持852版及更低版本的问题

            我在做课设程序时连不上数据库,提示数据库版本太高。即使在数据库设置里把兼容性改到2016(852版)仍然无法连接,网上找的解决方法也不成功,自己摸索了一番找到了解决方法。 具体是直接连接数据库的服务器,而不是连接数据库本身,这样就能成功连接并使

    2024年02月11日
    浏览(65)
  • 连接数据库报com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    JDBC加载驱动,连接SQLServer 2012 报 java.ext.dirs: C:Program FilesJavajdk1.8.0_331jrelibext;C:WindowsSunJavalibext com.microsoft.sqlserver.jdbc.SQLServerException: 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client pre

    2023年04月21日
    浏览(101)
  • IDEA02:配置SQL Server2019数据库

    主要是记录一下如何配置SQL Server2019的过程。 主要参考了博文:SQLServer2019安装(Windows)。 下载的官网在:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads。 可以选择下载免费的开发者版本( Developer 版 )。 SQL Server2019的可视化管理软件可以使用 SQL Server Management Studio ,下载

    2024年02月05日
    浏览(49)
  • Sql server 连接 Oracle数据库

    前提预警:本机必须装有Oracle客户端 检查是否安装Oracle客户端,并检查TNS信息是否配置完成 1.1、 在cmd中执行 sqlplus ,没有报错并出现Oracle版本号,则表示Oracle已安装 1.2、配置TNS信息(最上面的10.0.0.130可随意定义,eg:test、orcl、qerghasd…) 配置ODBC数据信息 2.1、打开ODBC数据

    2024年02月03日
    浏览(59)
  • VS连接SQL server数据库

    目录 连接数据库 使用dataGridView控件显示表中的数据。 实现基本CRUD操作 打开vs,点击 视图,打开sql资源管理器,添加SQL Server 输入服务器名称,用户名,密码,进行连接。 如图,就可以看到vs已经连接到了自己的数据库,class和song两个数据库 。可以看到class下面有五个表。

    2024年02月09日
    浏览(52)
  • Navicat连接SQL Server数据库

    使用navicat连接sqlserver数据库时必须连接sqlserver驱动,否则的话会连接报错; 按照应用的常理来说都是高版本兼容低版本的驱动; 我这边呢,是一个SQL Server Native Client 11.0的驱动; 大家需要的话可以到SQL Server官网网址去下载各类驱动; 网址:https://docs.microsoft.com/en-us/sql/con

    2024年02月08日
    浏览(56)
  • Idea连接SqlServer报错:驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接

    我的报错信息如下: [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target”。 ClientConnectionId:721941c7-3e08-4e80-bc56-418e1c051624 sun.securi

    2024年02月15日
    浏览(64)
  • 【远程连接 多个SQL SERVER数据库实例】

    在公司电脑上同时安装了SQL SERVER2012和SQL SERVER2019,分别设置了不同的实例,现用VPN连接公司电脑上的两个数据库实例,做一些记录。 如图所示,分别有MSSQLSERVER2012与MSSQLSERVER2019两个不同的实例,分别查看实例对应的TCP/IP 为数据库引擎访问配置 Windows 防火墙 - SQL Server | Micro

    2024年02月07日
    浏览(55)
  • 通过Java连接Sql Server数据库

    JDBC是Java DateBase Connectivity的简写,翻译过来就是java连接数据库,或者更通俗地说就是java语言操作数据库。JDBC的本质其实是官方定义的一套操作所有关系型数据库的规则,也就是接口。 微软官方jdbc下载地址:https://www.microsoft.com/zh-cn/download/details.aspx?id=11774 下载之后解压到相

    2024年01月17日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包