java - 尝试通过远程计算机连接到数据库时 SQL 服务器连接被拒绝

标签 java sql-server jdbc localhost remote-server

我是编程新手,我正在制作这个带有登录屏幕的聊天服务器,可以从 SQL Server 中提取数据。在我的笔记本电脑(数据库所在的位置)上进行测试时,它看起来很好。但是当我尝试在另一个桌面上运行代码时,

它一直在说:

"TCP/IP connection to host localhost, port 2175 has failed ..."

到目前为止,我已经尝试过这样做:

  • 启用 TCP/IP 协议(protocol)
  • 将端口设置为 1433
  • 将动态端口设置为 2175
  • 运行 SQL 浏览器(在内置帐户部分设置“本地服务”)
  • 重新启动 SQL Server(在内置帐户部分设置“网络服务”)
  • 创建一堆 TCP 端口规则(入站和出站 - 全部允许)
  • 创建 sqlserver 程序规则(入站和出站 - 全部允许)
  • 在防火墙异常(exception)中添加sqlserver

但是好像没有什么效果。

这是我连接到 SQLserver 的代码:

public boolean connect(String SQL) {
    String connectionUrl = "jdbc:sqlserver://localhost:2175;" +  
     "databaseName=TestConnection;integratedSecurity=True;";
    Connection con = null;
    Statement stm = null;
    ResultSet rs = null;
    boolean check = false;
    try {
        Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
        con = DriverManager.getConnection(connectionUrl);
        stm = con.createStatement();
        if (SQL.contains("update") || SQL.contains("insert") || SQL.contains("delete") || SQL.contains("UPDATE") || SQL.contains("INSERT") || SQL.contains("DELETE")) {
            int clu = stm.executeUpdate(SQL);
            if (clu == 0)
                check = false;
            else
                check = true;
        }
        else {
            rs = stm.executeQuery(SQL);
            while (rs.next()) {
                System.out.println(rs.getString(1) + " | " + rs.getString(2));
                check = true;
            }
        }
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
    } finally {  
        if (rs != null) try { rs.close(); } catch(Exception e) {}  
        if (stm != null) try { stm.close(); } catch(Exception e) {}  
        if (con != null) try { con.close(); } catch(Exception e) {}  
    }

    return check;
}

我正在使用 SQL Server 2016。我知道有很多话题讨论这个问题,但我似乎找不到解决方案。

我还需要提及:我尝试在其上运行代码的桌面没有安装 SQL Server。有必要吗?

最佳答案

String connectionUrl = "jdbc:sqlserver://localhost:2175;" +  
    "databaseName=TestConnection;integratedSecurity=True;";

以上代码表示,您正在尝试连接到安装在同一台机器上的数据库(即 localhost)。

现在,如果您尝试连接到远程服务器,则需要改用其 IP 地址。此外,您需要确保它们在同一网络中(尝试使用其 IP 地址 ping 该机器)。

关于java - 尝试通过远程计算机连接到数据库时 SQL 服务器连接被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46305810/

相关文章:

PHP 和 SQL Server - 思考

java - 当脚本显示在 HTML 文本区域中时,是否可能发生 XSS 攻击?

sql-server - SQL Server 是否有通用的 oData 提供程序?

java - 为什么 Java 会尝试从堆中保留最大空间

c# - 更新到 EF 7.0.0-rc1-final 破坏了 SQL DbContextOptionsBuilder UseSqlServer

将数据库从 MySQL 更改为 SQLite 后的 Java 项目错误

java - Statement 中的 executeUpdate(String, int) 方法始终返回 1

java - 尝试使用 java 数据库更新时出现 MySQLSyntaxErrorException

java - 理解Java中null和 '\u000'的区别

java - 在 Apache Derby Embedded 上调用 last_insert_id() 时出现 Hibernate 异常