2

我正在尝试使用 JDBC 驱动程序在一些 Java 和 SQL Server 之间创建连接。我创建了一个 Connection 类,它应该与我的计算机上的服务器建立连接,例如 IP 地址为“BHX”

这是连接类

public class Connection {

public static void main(String[] args) throws Exception {

    try {
        String databaseDriver = "net.sourceforge.jtds.jdbc.Driver";
        Class.forName(databaseDriver);
    } catch (Exception e) {
        e.printStackTrace();
    }
    try {               
        String url = "jdbc:jtds:sqlserver://BHX:1433/Forecast;instance=SQLEXPRESS";
        java.sql.Connection con =  DriverManager.getConnection(url);
        System.out.println("Connection created");
        con.close();
    } catch (Exception e1) {
        e1.printStackTrace();
    }
}
}

我想知道 url 字符串是否有任何问题,因为当我运行此代码时,我收到以下错误:

java.sql.SQLException: Network error IOException: Connection refused: connect
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:417)
at net.sourceforge.jtds.jdbc.ConnectionJDBC3.<init>(ConnectionJDBC3.java:50)
at net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:185)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at Connection.main(Connection.java:56)
Caused by: java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at net.sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:311)
at net.sourceforge.jtds.jdbc.SharedSocket.<init>(SharedSocket.java:261)
at net.sourceforge.jtds.jdbc.ConnectionJDBC2.<init>(ConnectionJDBC2.java:318)
... 5 more

我已经看到了类似的问题(比如这里),但看起来我已经遵循了所有可能的解决方案。我检查了配置管理器中启用了 TCP/IP,并且端口号是 1433。

我试过在禁用防火墙的情况下运行它,但仍然出现相同的错误。

telnet BHX 1433 并且我收到以下消息“...无法在端口 1433 上打开与主机的连接:连接失败”

4

1 回答 1

-1

当您将用户名和密码添加到连接字符串时,它将起作用,例如:

"jdbc:jtds:sqlserver://BHX:1433/Forecast;instance=SQLEXPRESS;user=XXXXX;password=XXXXX"

这应该适用于 SQL Server 身份验证。

如果您只使用 Windows 身份验证,您还需要提供如下域:

"jdbc:jtds:sqlserver://BHX:1433/Forecast;instance=SQLEXPRESS;domain=XXXXX;user=XXXXX;password=XXXXX"
于 2014-09-30T18:00:22.587 回答