将JDBC与sqlserver 2017连接的问题

时间:2019-04-08 04:16:54

标签: java sql-server jdbc

我正在尝试使用jdbc驱动程序(Microsoft 4.2和7.1)jdk 1.8_201连接到sqlserver 2017。 Windows 10

String connectionUrl = "jdbc:sqlserver://localhost\\SQLEXPRESS01;integratedSecurity=true;";
         Random r = new Random();
         try(Connection connection = DriverManager.getConnection(connectionUrl)) {
}

我遇到以下异常:

  

线程“主”中的异常   com.microsoft.sqlserver.jdbc.SQLServerException:驱动程序无法   通过使用安全套接字建立到SQL Server的安全连接   层(SSL)加密。错误:“连接被对等方重置:套接字写入   错误ClientConnectionId:16429365-183f-44fc-a599-c66fe7ad39be”。   com.microsoft.sqlserver.jdbc.SQLServerConnection.terminate(SQLServerConnection.java:2887)     在   com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1881)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:2452)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:2103)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1950)     在   com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:1162)     在   com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:735)     在java.sql.DriverManager.getConnection(未知源)在   java.sql.DriverManager.getConnection(未知源),位于   Autofill.main(Autofill.java:50)原因:java.io.IOException:   对等方重置连接:套接字写入错误   ClientConnectionId:16429365-183f-44fc-a599-c66fe7ad39be位于   com.microsoft.sqlserver.jdbc.TDSChannel $ SSLHandshakeInputStream.ensureSSLPayload(IOBuffer.java:780)     在   com.microsoft.sqlserver.jdbc.TDSChannel $ SSLHandshakeInputStream.readInternal(IOBuffer.java:840)     在   com.microsoft.sqlserver.jdbc.TDSChannel $ SSLHandshakeInputStream.read(IOBuffer.java:833)     在   com.microsoft.sqlserver.jdbc.TDSChannel $ ProxyInputStream.readInternal(IOBuffer.java:1003)     在   com.microsoft.sqlserver.jdbc.TDSChannel $ ProxyInputStream.read(IOBuffer.java:993)     在sun.security.ssl.InputRecord.readFully(未知源)处   sun.security.ssl.InputRecord.read(未知源)位于   sun.security.ssl.SSLSocketImpl.readRecord(未知源)在   sun.security.ssl.SSLSocketImpl.performInitialHandshake(未知来源)     在sun.security.ssl.SSLSocketImpl.startHandshake(未知源)在   sun.security.ssl.SSLSocketImpl.startHandshake(未知源)在   com.microsoft.sqlserver.jdbc.TDSChannel.enableSSL(IOBuffer.java:1799)     ...另外8个

即使与Odbc,它也可以与sqlcmd和SSMS很好地连接

我无法使用Odbc驱动程序,因为它已从jdk 8中删除,并且我目前没有旧版本7与Odbc驱动程序连接

1 个答案:

答案 0 :(得分:-1)

DriverManager.getConnection(“ jdbc:mysql:// localhost:3306 / DB?useLegacyDatetimeCode = false&serverTimezone = UTC”,“ USER”,“ PW”);

我使用mysql,所以我不知道它如何与sqlserver一起使用。 (仍然学习它)但是在mysql中,您必须指定用户和密码。也许就是这个问题。

LG RT