【问题标题】:Can't connect to sql server with java无法使用java连接到sql server
【发布时间】:2017-12-27 14:14:37
【问题描述】:

我正在尝试使用 Java 和 Microsoft SQL Server 连接到本地 sql server。 我正在使用 sql server 身份验证。

代码如下:

import java.sql.*;


public class Main {
    public static void main(String[] args)  {

        String userName ="testlogin2";
        String password ="pass";

        String url ="jdbc:sqlserver://localhost/LabNoteMap;integratedSecurity=true;"; //LabNoteMap beeing target db
        try {
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            Connection conn = DriverManager.getConnection(url, userName, password);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        System.out.println("end");
    }
}

和堆栈跟踪:

"C:\Program Files\Java\jdk-9\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\lib\idea_rt.jar=63510:C:\Program Files\JetBrains\IntelliJ IDEA 2017.2.5\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\Deus\IdeaProjects\testMYSQL\out\production\testMYSQL;C:\Users\Deus\Desktop\jdbc\sqljdbc_6.0\enu\jre8\sqljdbc42.jar Main
end
com.microsoft.sqlserver.jdbc.SQLServerException: The TCP/IP connection to the host localhost/LabNoteMap, port 1433 has failed. Error: "localhost/LabNoteMap. Verify the connection properties. Make sure that an instance of SQL Server is running on the host and accepting TCP/IP connections at the port. Make sure that TCP connections to the port are not blocked by a firewall.".
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:191)
    at com.microsoft.sqlserver.jdbc.SQLServerException.ConvertConnectExceptionToSQLServerException(SQLServerException.java:242)
    at com.microsoft.sqlserver.jdbc.SocketFinder.findSocket(IOBuffer.java:2369)
    at com.microsoft.sqlserver.jdbc.TDSChannel.open(IOBuffer.java:551)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectHelper(SQLServerConnection.java:1963)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:1628)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connectInternal(SQLServerConnection.java:1459)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:773)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1168)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:678)
    at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:229)
    at Main.main(Main.java:13)

Process finished with exit code 0

还有一些ss:

还要注意,在Sql server配置中,tcp/ip是开启的,端口设置为1433。

我猜可能是防火墙?但不确定如何检查它,或者其他什么?

【问题讨论】:

  • 检查你的防火墙,看看是否有一些关于什么应用程序试图连接到你的数据库的日志
  • 您的 URL 无效,请查看 Microsoft 站点上 SQL Server JDBC 驱动程序文档的Building the Connection URL。您错误地假设所有 JDBC 驱动程序的 URL 都遵循相同的结构,但事实并非如此。

标签: java sql jdbc connection


【解决方案1】:

您的连接字符串错误。你应该改变它

String url ="jdbc:sqlserver://localhost/LabNoteMap;integratedSecurity=true;";

String url ="jdbc:sqlserver://localhost;databaseName=LabNoteMap;integratedSecurity=true;";

您的目标不是要建立连接的数据库。

【讨论】:

    【解决方案2】:
    private static String url="jdbc:sqlserver://localhost:1433;DatabaseName = students";
    

    我正在使用 msbase.jar 和 mssqlserver.jar 和 msutil.jar,可能你使用了错误的 jar 或者你的 url 错误(DatabaseName = ?)

    【讨论】:

    • 听起来你使用的是旧版本的SQL Server驱动(SQL Server 2000 JDBC驱动),在最近的驱动中,你只需要mssql-jdbc-6.2.2.jre8.jar
    猜你喜欢
    • 2020-02-09
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 2015-08-29
    • 2016-11-08
    • 2014-04-07
    相关资源
    最近更新 更多