com.microsoft.sqlserver.jdbc.SQLServerException: 到主机 的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

时间:2023-01-07 03:17:01
 

问题描述:最简单的数据库连接报错,到主机  的 TCP/IP 连接失败。(win 7 操作系统)

错误信息:

com.microsoft.sqlserver.jdbc.SQLServerException: 到主机  的 TCP/IP 连接失败。 java.net.ConnectException: Connection refused: connect

package sqlconnect;
import java.sql.*;
public class sqlconnect {
public static void main(String[] args) {
String user = "zcj";
String password = "123";
String url = "jdbc:sqlserver://localhost:1433;DatabaseName=lol";
String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String tableName = "lol";
String sqlstr;
Connection con = null;
Statement stmt = null;
ResultSet rs = null;
try{
Class.forName(driver);
con = DriverManager.getConnection(url,user,password);
stmt = con.createStatement();
sqlstr = "insert into " + tableName + " values('333','333')";
stmt.executeUpdate(sqlstr);
sqlstr = "select * from " + tableName;
rs = stmt.executeQuery(sqlstr);
ResultSetMetaData rsmd = rs.getMetaData();
int j = 0;
j = rsmd.getColumnCount();
for(int k=0;k<j;j++){
System.out.print(rsmd.getColumnName(k+1));
System.out.print("/t");
}
System.out.println();
while(rs.next()){
for(int i=0;i<j;i++){
System.out.print(rs.getString(i+1));
System.out.print("/t");
}
System.out.println();
}
}
catch(ClassNotFoundException e1){
System.out.println("数据库驱动不存在");
System.out.println(e1.toString());
}
catch(SQLException e2){
System.out.println("数据库存在异常");
System.out.println(e2.toString());
}
finally{
try{
if(rs != null)
rs.close();
if(stmt != null)
stmt.close();
if(con != null)
con.close();
}
catch(SQLException e){
System.out.println(e.toString());
}
}
}
}

解决方式:

  安装SQL Server 2008后。在目录下找到SQL Server Configuration Manager这个工具,然后在左边的目录中找到SQL Server 2008网络配置下的MSSQLSERVER,点击后右侧列出了所有协议,找到TCP/IP,发现是禁用状态,启用后再重启MSSQLSERVER服务即可(此步骤必须!),此项可在该工具下的SQL Server 2008服务中找到,或在windows服务中找到。

可能的其他解决方式:

  网上有许多答案是TCP端口不是1433,查看真实的端口并在代码中修改即可。 可在SQL Server 2008网络配置下的MSSQLSERVER,点击后右侧列出了所有协议,找到TCP/IP,双击,找到IP地址,里面有IP地址和端口号修改。