问题
在使用远程连接数据库的时候,经常出现连接超时,其实很大部分原因是没有开启TCP/IP协议,在完全开启了这个协议的时候,剩下的可能的原因就是远程主机的防火墙没有为当前数据库开启可用的端口。所以可能的解决方法是在防火墙中为TCP/IP开启端口。
方法
- 打开控制面板,进入防火墙
- 单击右侧高级设置
- 单击右侧入站规则
- 单击左侧新建规则
- 选择端口,进入下一页
- 选择TCP,特定本地端口,输入1433(或者你的默认的端口号)
- 下一步,输入名称(具有意义的名称都可以)
- 完成即可
测试
win+R ->运行cmd->netstat -na ->查看你的远程的ip:1433(端口)是否在监听状态 。或者直接在程序中验证。
验证
java
中直接上代码,看能否查到数据;
@Test
public void ConnectSqlServer(){
String driverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL="jdbc:sqlserver://192.168.0.113:1433;databaseName=ShDB";
String userName="test";
String userPsd="123456789";
Connection dbCon;
Statement st;
ResultSet rs;
try {
Class.forName(driverName);
dbCon= DriverManager.getConnection(dbURL,userName,userPsd);
System.out.println("connect to the DataBase successfully!");
String sql="select * from Users";
st=dbCon.createStatement();
rs=st.executeQuery(sql);
while(rs.next()){
System.out.println("Data:"+rs.getString(1));
}
}catch (SQLException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}