問題
在使用遠程連接數據庫的時候,經常出現連接超時,其實很大部分原因是沒有開啓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();
}
}