SQL 尝试通过远程计算机连接到数据库时服务器连接被拒绝
SQL server connection refused when trying to connect to DB through a remote computer
我是编程新手,我正在制作这个带有从 SQL 服务器提取数据的登录屏幕的聊天服务器。在我的笔记本电脑(数据库所在的位置)上进行测试时,它看起来很好。但是当我试图在另一个桌面上使用 运行 代码时,
它一直在说:
"TCP/IP connection to host localhost, port 2175 has failed ..."
到目前为止我已经尝试过这些:
- 启用TCP/IP 协议
- 将端口设置为 1433
- 将动态端口设置为 2175
- 运行 SQL 浏览器(在内置帐户部分设置 "Local service")
- 重新启动 SQL 服务器(在内置帐户部分设置 "Network service")
- 创建一堆 TCP 端口规则(入站和出站 - 全部允许)
- 创建 sqlserver 程序规则(入站和出站 - 全部允许)
- 在防火墙例外中添加 sqlserver
不过好像没什么效果
这是我连接到SQL服务器的代码:
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 服务器 2016。我知道有很多话题讨论这个问题,但我似乎找不到解决方案。
我还需要提及:我尝试 运行 我的代码所在的桌面没有安装 SQL 服务器。有必要吗?
String connectionUrl = "jdbc:sqlserver://localhost:2175;" +
"databaseName=TestConnection;integratedSecurity=True;";
以上代码表示,您正在尝试连接安装在同一台机器上的数据库(即 localhost
)。
现在,如果您尝试连接到远程服务器,则需要改用其 IP 地址。此外,您需要确保它们在同一网络中(尝试使用其 IP 地址 ping 该机器)。
我是编程新手,我正在制作这个带有从 SQL 服务器提取数据的登录屏幕的聊天服务器。在我的笔记本电脑(数据库所在的位置)上进行测试时,它看起来很好。但是当我试图在另一个桌面上使用 运行 代码时,
它一直在说:
"TCP/IP connection to host localhost, port 2175 has failed ..."
到目前为止我已经尝试过这些:
- 启用TCP/IP 协议
- 将端口设置为 1433
- 将动态端口设置为 2175
- 运行 SQL 浏览器(在内置帐户部分设置 "Local service")
- 重新启动 SQL 服务器(在内置帐户部分设置 "Network service")
- 创建一堆 TCP 端口规则(入站和出站 - 全部允许)
- 创建 sqlserver 程序规则(入站和出站 - 全部允许)
- 在防火墙例外中添加 sqlserver
不过好像没什么效果
这是我连接到SQL服务器的代码:
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 服务器 2016。我知道有很多话题讨论这个问题,但我似乎找不到解决方案。
我还需要提及:我尝试 运行 我的代码所在的桌面没有安装 SQL 服务器。有必要吗?
String connectionUrl = "jdbc:sqlserver://localhost:2175;" + "databaseName=TestConnection;integratedSecurity=True;";
以上代码表示,您正在尝试连接安装在同一台机器上的数据库(即 localhost
)。
现在,如果您尝试连接到远程服务器,则需要改用其 IP 地址。此外,您需要确保它们在同一网络中(尝试使用其 IP 地址 ping 该机器)。