我有这个错误/异常 -
SQL异常:com.microsoft.sqlserver.jdbc.SQLServerException:与主机localhost,端口1433的TCP / IP连接失败。错误:“连接超时。验证连接属性,检查主机上是否正在运行SQL Server实例并接受端口上的TCP / IP连接,并且没有防火墙阻止与端口的TCP连接。”。
我的代码是 -
try {
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String connectionUrl = "jdbc:sqlserver://localhost:1433";
Connection con = DriverManager.getConnection(connectionUrl,"","");
System.out.println("ok");
} catch (SQLException e) {
System.out.println("SQL Exception: "+ e.toString());
}
catch (ClassNotFoundException cE) {
System.out.println("Class Not Found Exception: "+ cE.toString());
}
我怎么能解决它,请帮助我。
答案 0 :(得分:2)
这几乎可能意味着什么 - 基本上,无法连接到localhost上的端口1433。可能是网络问题,可能是数据库未启动,可能是它正在运行但未绑定到端口1433.
在紧要关头,你总是可以打开一个shell并运行
telnet localhost 1433
查看是否可以建立连接。
答案 1 :(得分:1)
我有这个错误。
我通过进入SQL Server配置管理器修复了它。
在SQLEXPRESS的SQL Server 2005 Configuration -> Protocols
下。查看IP Address
的{{1}}的{{1}}标签。
在协议列表的最底部(在IPALL下),TCP端口字段为空。我把1433放在那里,保存,重新启动SQL服务,它工作得很好:)
答案 2 :(得分:0)
它告诉你无法连接。
检查该端口上本地计算机上的sql server是否可用。
检查sql server是否接受了您在getConnection()调用中提供的空白名称和密码的连接。
检查您的jdbc网址格式是否正确,有时是制造商/驱动程序特定的。
答案 3 :(得分:0)
错误只是意味着java无法连接到您的数据库。数据库未运行或您的防火墙阻止与它的连接。如果您确定您的数据库服务器已在您的本地主机上运行,请在禁用Windows防火墙后尝试。
答案 4 :(得分:0)
让我们看看一些可能性:
数据库服务器没有在localhost上侦听:1433:你可能会收到“拒绝连接”而不是“连接超时”
数据库服务器是紧张性的(即处于不响应请求的状态):您可能会“连接超时”。
数据库服务器严重超载:您可能会“连接超时”,但您可能会注意到计算机速度非常慢。
本地软件防火墙配置为阻止对端口1433的所有请求:您可以获得“连接被拒绝”或“连接超时”...或其他一些响应。 (这完全取决于防火墙对不需要的流量的影响。)
未配置环回接口(针对IP 127.0.0.x
):您更有可能获得“无主机路由”或“无网络路由”。
localhost
的DNS条目配置错误(即localhost
无法解析为127.0.0.x
) - 可能会发生很多事情......具体取决于配置错误的方式
以下是您可以采取的一些措施来诊断问题......具体取决于您的系统:
使用ipconfig
或ifconfig
查看配置的网络。
查看“/ etc / hosts”以查看localhost
的条目
尝试使用telnet -p 1433
使用“ps”或任务管理器查看正在运行的进程。
检查本地防火墙配置,确保1433
已从配置的localhost
IP地址(可能是127.0.0.1
)中打开(至少)TCP。
答案 5 :(得分:0)
我遇到了与此类似的问题,并通过添加以下行解决了这个问题:
System.setProperty("java.net.preferIPv4Stack", "true");
问题是它使用IPv6而不是IPv4来访问数据库主机(我将它用于远程主机上的数据库,而不是localhost)。 希望它有所帮助。