问题描述:
刚开始学javaweb和sql语言,试着做一个简单的程序显示一下数据库中的数据,可是总是出错,错误是”com.microsoft.sqlserver.jdbc.SQLServerException: 通过端口 1433 连接到主机 localhost 的 TCP/IP 连接失败。错误:“Connection refused: connect。请验证连接属性,并检查 SQL Server 的实例正在主机上运行,且在此端口接受 TCP/IP 连接,还要确保防火墙没有阻止到此端口的 TCP 连接。“
import java.sql.*;
public class Demo {
public static void main(String[] args) {
try { //1.加载驱动
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");//固定
System.out.println("加载驱动成功!");
//2.连接
Connection conn = null;//连接对象(注意与java不同,创建对象不用new)
String dbURL = "jdbc:sqlserver://localhost:1433;DatabaseName=test001;user=test1;password=123456";//ip地址、端口、数据库名
conn = DriverManager.getConnection(dbURL, "test1", "123456");
System.out.println("连接数据库成功!");
String sql="select * from test001";
PreparedStatement statement=null;
statement=conn.prepareStatement(sql);
ResultSet res=null;
res=statement.executeQuery();
while(res.next()){
String title=res.getString("name");
System.out.println(title);
}
} catch (Exception e) {
e.printStackTrace();
System.out.println("连接数据库失败!");
}
}
}
原因分析:
连接URL的格式没有错,驱动字符串也没有出错,Classpath里的驱动也没有问题。这时候看到了这位大佬的文章,https://blog.csdn.net/ahstusujian/article/details/6911745
终于明白了错误点:没有重启sql server服务。重启它,不是简单的重启sql server软件,这一点用也没有。
解决方案:
很多人配置了1433端口,却没有启动TCP/IP;启动之后需要再次启动sql server服务。这里不再说怎么配置1433端口,很多人的文章都写了这个;以我的java 1.8和sql server2019为例:
Step1.
启动界面:
此界面的地址:打开计算机选中此电脑点击右键,单击管理;打开服务和应用程序管理器——>sql server配置管理器——>sql server 网络配置——>
右键启用TCP/IP(我的已经启用过了)
Step2.
再重启sql server服务
右键这两个红线指向的部分,重启;成功。
这时再运行我的程序,成功print了数据库的name的元素。
这是我的第一篇CSDN文章,因为想帮助更多的像我这样的小白而发表,有错误之处或者冒犯之处还望各位斧正。