sql server的等效jdbc连接字符串

时间:2013-05-31 07:25:19

标签: 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中使用时连接正常。 (我手动创建了dbUserId并从sql server management studio分配了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防火墙已关闭(并且它还在家庭和公共网络上为MSSQLSERVER端口1433 tcp添加了例外)。从sql server management studio,我已经为sql server和sql server express启用了TCP / IP。

有人能指出连接字符串或sql server连接设置可能出错吗?

2 个答案:

答案 0 :(得分:2)

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

我希望这对于那些试图在未来实现类似目标的人来说是有用的。

答案 1 :(得分:0)

您是否尝试过使用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);