【问题标题】:Trouble connecting to SQL server using Java使用 Java 连接到 SQL Server 时遇到问题
【发布时间】:2018-10-01 11:02:03
【问题描述】:

这是我编写的代码的一部分:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
String host1 = "<URL/Connection path string>";
String uname1= "<User name>";
String pwd1 = "<Password>";
Connection con1 =DriverManager.getConnection(host1,uname1,pwd1);
Statement stmt1 = con1.createStatement();
ResultSet rs = stmt1.executeQuery("<Query>");

我使用过以下 jar 文件:jtds-1.3.0、sqljdbc-4.1.5605、sqljdbc4-4.0

当我运行代码时,出现以下错误:

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The connection to the host <host-name>, named instance <instance-name> failed. Error: "java.net.SocketTimeoutException: Receive timed out". Verify the server and instance names and check that no firewall is blocking UDP traffic to port 1434.  For SQL Server 2005 or later, verify that the SQL Server Browser Service is running on the host.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(SQLServerException.java:190)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.getInstancePort(SQLServerConnection.java:3589)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.primaryPermissionCheck(SQLServerConnection.java:1225)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.login(SQLServerConnection.java:972)
    at com.microsoft.sqlserver.jdbc.SQLServerConnection.connect(SQLServerConnection.java:827)
    at com.microsoft.sqlserver.jdbc.SQLServerDriver.connect(SQLServerDriver.java:1012)
    at java.sql.DriverManager.getConnection(DriverManager.java:571)
    at java.sql.DriverManager.getConnection(DriverManager.java:215)
    at first_doc.main(first_doc.java:28)

据我所知,没有防火墙阻止流量。

另外,我需要添加端口号作为连接 URL 的一部分吗?

编辑:我使用 SQL Server 2008 版

我在配置管理器中找不到 SQLEXPRESS 的协议

【问题讨论】:

  • 您的实际代码是原样吗?我的意思是String host1 = "&lt;URL/Connection path string&gt;"; 之类的?
  • 你的sql server是在后台运行的吗?
  • @Cid 不,出于隐私原因,我已对其进行了修改。
  • @Arty,是的
  • @TRV 好的,我只是想确定一下 :)

标签: java sql sql-server


【解决方案1】:

这些是您需要执行的步骤。如果您已经这样做了,请再次检查。

  • 从这里下载最新的 MSSQL JDBC 驱动程序:http://msdn.microsoft.com/en-us/sqlserver/aa937724.aspx

  • 引用了我项目中的 2 个 JAR 文件:

    sqljdbc.jar 和 sqljdbc4.jar

    (我还不确定是以上两个都需要还是只需要一个..)

  • 确保 SQL Server Browser windows 服务正在运行

  • 打开 SQL Server 配置管理器并转到 SQL Server 网络配置下的 SQLEXPRESS 协议。右键单击 TCP/IP 并选择属性。

    设置启用 = YES。

  • 当您在那里时,单击 IP 地址选项卡并找到全部 IP 部分。

    将 TCP 端口设置为 1433。

  • sqljdbc_auth.dll 添加到您的 PATH 环境变量中。就我而言:

    D:\Java\sqljdbc_4.0\enu\auth\x64
    
  • sqljdbc_auth.dll 复制到您的 JDK 目录。就我而言:

    C:\Program Files\Java\jdk1.7.0_04\bin
    

【讨论】:

  • 我终于明白了!我错过了最后一步,将 dll 文件添加到 JDK 目录。还必须更改 CLASSPATH 以引用 sqljdbc JAR 文件。感谢所有试图提供帮助的人!
猜你喜欢
  • 2016-12-26
  • 2014-12-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-13
  • 1970-01-01
相关资源
最近更新 更多