【问题标题】:jdbc:jtds Connection to SQL server [duplicate]jdbc:jtds连接到SQL服务器[重复]
【发布时间】:2012-11-05 11:54:29
【问题描述】:

我正在尝试使用 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

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

我已尝试在禁用防火墙的情况下运行此程序,但仍然出现相同的错误。

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

【问题讨论】:

  • 您确定防火墙没有阻止 1433 吗?你检查了吗?
  • 你能telnet到那个主机/端口吗? jTDS 确实与 SQL Server 完美配合,所以它应该是最后一个责任。
  • 数据库是否有可能绑定到 localhost 而不是 0.0.0.0 或 A/B/C 类私有 IP?
  • 我尝试使用 telnet BHX 1433 并收到以下消息'...无法在端口 1433 上打开与主机的连接:连接失败'
  • 我不确定 Thanga 发布的第一个链接是否会解决 telnet 的连接问题。

标签: java sql-server jdbc


【解决方案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"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-21
    • 2013-09-15
    • 1970-01-01
    • 1970-01-01
    • 2015-09-04
    • 2014-06-29
    • 1970-01-01
    相关资源
    最近更新 更多