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 PropertiesIP 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 ) – 可能会发生很多事情……具体取决于配置错误的方式。

您可以采取以下措施来诊断问题……具体取决于您的系统:

  • 使用ipconfigifconfig查看配置的网络。

  • 查看“/ 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)。 希望能帮助到你。