java - sql server 的等效 jdbc 连接字符串

标签 java asp.net sql jdbc

我目前正在使用以下连接字符串连接到数据库(数据库与 ServerIP 在同一台服务器上):

String constr = "Data Source=ServerIP,1433;Network Library=DBMSSOCN;Initial 
Catalog=dbName;User ID=dbUserID;Password=dbUserPassword";

这在 asp.net 中使用时连接良好。 (我已经从 sql server management studio 手动创建了 dbUserId 并为其分配了 dbUserPassword。dbUserId 是数据库“dbName”的所有者)

我在另一台电脑上有一个 java swing 应用程序,我需要连接到同一个数据库。我正在使用驻留在 C: 中的 sqljdbc4.jar。我的类路径有条目“.;C:\sqljdbc4.jar”。为了完成连接,我使用了以下代码行:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

 String url = "jdbc:sqlserver://ServerIP:1433;databaseName=dbName";

   String user = "dbUserID";
   String pass = "dbUserPassword";
   Connection connection = DriverManager.getConnection(url, user, pass); 

但是,我在“Connection connection =DriverManager.getConnection(url, user, pass);”这一行遇到异常:“与主机“ServerIP”的 TCP/IP 连接,端口 1433 失败。错误:“连接超时。验证连接属性。确保 SQL Server 实例正在主机上运行并在端口上接受 TCP/IP 连接。确保与该端口的 TCP 连接未被防火墙阻止。”

我检查过 Windows 防火墙是否关闭(并且它还为家庭和公共(public)网络上的 MSSQLSERVER 端口 1433 tcp 添加了异常(exception))。在 sql server management studio 中,我已经为 sql server 和 sql server express 启用了 TCP/IP。

谁能指出连接字符串或 sql server 连接设置可能有什么问题?

最佳答案

终于找到了根本原因。问题不在于 java 连接字符串、IP 地址或端口。它与网络有关。 serverIP 和运行 java 应用程序的机器的 IP 位于不同的子网中。因此,这两个子网之间的切换机制阻止了端口 1433 上的流量。因此我在运行 java 应用程序的 pc 上超时,而 asp.net web 应用程序工作得很好(流量没有通过交换机互连子网)

我希望这对将来尝试实现类似目标的人有用。

关于java - sql server 的等效 jdbc 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16851938/

相关文章:

java - 如何模拟 CrudRepository 调用?

java - Gson 和抽象父类(super class) : deserialization issue

java - 如何更改 ContentProposalAdapter 的外观

c# - 如何过滤数据表?

c# - 无法从后面的代码访问(Javascript 填充)下拉选择的值

c# - 如何使用 C# 在 ASP.NET 中创建双陆棋棋盘

java - 有时数据不会插入到表中

sql - 数据库-关系代数自然连接 2 个表包含 2 个相同的列名

java - Java Web Start 中的启动文件错误

sql - 取决于条件的 Row_number()