java到sql server连接exception
我有这个错误/exception –
SQLexception:com.microsoft.sqlserver.jdbc.SQLServerException:与主机localhost,端口1433的TCP / IP连接失败。 错误:“连接超时。validation连接属性,检查主机上是否正在运行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()); }
我怎么能解决它,请帮助我。
这几乎可能意味着什么 – 基本上,无法连接到localhost上的端口1433。 可能是网络问题,可能是数据库未启动,可能是它正在运行但未绑定到端口1433。
在紧要关头,你总是可以打开一个shell并运行
telnet localhost 1433
看看是否可以建立连接。
我有这个错误。
我通过进入SQL Server配置管理器修复了它。
在SQL Server 2005 Configuration -> Protocols
SQLEXPRESS的SQL Server 2005 Configuration -> Protocols
下。 查看TCP/IP Protocol
Properties
的IP Address
选项卡。
在协议列表的最底部(在IPALL下),TCP端口字段为空。 我把1433放在那里,保存,重新启动SQL服务,它工作得很好:)
它告诉你它无法连接。
检查该端口上本地计算机上的sql server是否可用。
检查sql server是否接受与您在getConnection()调用中提供的空白名称和密码的连接。
检查您的jdbcurl是否格式正确,有时是制造商/驱动程序特定的。
该错误只是意味着java无法连接到您的数据库。 数据库未运行或防火墙阻止与其建立连接。 如果您确定数据库服务器已在本地主机上运行,请在禁用Windows防火墙后尝试。
让我们看看一些可能性:
-
数据库服务器没有侦听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。
我遇到了类似的问题,并通过添加以下行解决了这个问题:
System.setProperty("java.net.preferIPv4Stack", "true");
问题是它使用IPv6而不是IPv4来访问db主机(我将它用于远程主机上的数据库,而不是localhost)。 希望能帮助到你。