Java sql server的等效jdbc连接字符串

Java sql server的等效jdbc连接字符串,java,asp.net,sql,jdbc,Java,Asp.net,Sql,Jdbc,我当前正在使用以下连接字符串连接到数据库(该数据库与ServerIP位于同一服务器上): 这在asp.net中使用时连接良好。(我已经从SQLServerManagementStudio手动创建了dbUserId并为其分配了dbUserPassword。dbUserId是数据库“dbName”的所有者) 我在另一台pc上有一个java swing应用程序,需要连接到同一个数据库。我正在使用驻留在C:中的sqljdbc4.jar。我的类路径有一个条目“;C:\sqljdbc4.jar”。为了完成连

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

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

我在另一台pc上有一个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”,端口1433的TCP/IP连接失败。错误:“连接超时”。验证连接属性。确保SQL Server实例正在主机上运行,并在端口接受TCP/IP连接。确保到端口的TCP连接未被防火墙阻止。“

我已检查windows防火墙是否已关闭(它还为家庭和公共网络上的MSSQLSERVER端口1433 tcp添加了例外)。我已从sql server management studio为sql server和sql server express启用了tcp/IP


有人能告诉我连接字符串或sql server连接设置可能有什么问题吗?

您是否尝试过使用
jtds.jar
。我正在使用以下工具,它对我有效

  public static String jdbc_url="jdbc:jtds:sqlserver://yourServerIp:1433/dbName";
  public static String jdbc_username="sa"; 
  public static  String jdbc_password="prabhakar";
  public static String jdbc_driver="net.sourceforge.jtds.jdbc.Driver"; 
  Class.forName(jdbc_driver);
  Connection cn=null;    
  cn=DriverManager.getConnection(jdbc_url, jdbc_username,jdbc_password);

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


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

您可以从运行Swing应用程序的位置ping ServerIP吗?ping IP并检查端口是否打开,可能正在使用某些网络sniffers@maba我能够ping这个IP。事实上,我正在从运行java应用程序的机器远程使用服务器另外,netstat-aon给出了以下一行:TCP 0.0.0.0:1433 0.0.0.0:0收听5584混乱…是
ServerIP
盒子的名称,还是只是你写的东西而不是问题中的
x.x.x
?@maba是我写的东西而不是x.x.x.xI会试试看。谢谢。你做了什么您如何解决上述问题?即,在何处进行了哪些更改?@DPM我刚刚确保java应用程序和sql数据库服务器位于上述同一子网中的计算机上。我可以知道您还需要哪些其他信息吗?@Karan我想我也面临着同样的问题。我的sql server具有主机名*.uss.net和linux server有*.privatecloud.local。这些在不同的子网中吗?你能帮我吗?
  public static String jdbc_url="jdbc:jtds:sqlserver://yourServerIp:1433/dbName";
  public static String jdbc_username="sa"; 
  public static  String jdbc_password="prabhakar";
  public static String jdbc_driver="net.sourceforge.jtds.jdbc.Driver"; 
  Class.forName(jdbc_driver);
  Connection cn=null;    
  cn=DriverManager.getConnection(jdbc_url, jdbc_username,jdbc_password);