【问题标题】:Unable to get data from Sql Server 2005 (connection time out exception)无法从 Sql Server 2005 获取数据(连接超时异常)
【发布时间】:2012-03-06 11:06:34
【问题描述】:

java.sql.SQLException: 网络错误 IOException: Connection timed out: connect at net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:410) at net.sourceforge.jtds.jdbc.ConnectionJDBC3.(ConnectionJDBC3. java:50) 在 net.sourceforge.jtds.jdbc.Driver.connect(Driver.java:184) 在 java.sql.DriverManager.getConnection(DriverManager.java:582) 在 java.sql.DriverManager.getConnection(DriverManager.java :185) 在 mahesh.MyFrame.connectToServer(MyFrame.java:50) 在 mahesh.DataCount.main(DataCount.java:18) 原因:java.net.ConnectException:连接超时:在 java.net.PlainSocketImpl 连接。 socketConnect(Native Method) at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333) at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195) at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)在 java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 在 java.net.Socket.connect(Socket.java:519) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang.reflect.Method.invoke(Method.java:597) 在 net。 sourceforge.jtds.jdbc.SharedSocket.createSocketForJDBC3(SharedSocket.java:307) 在 net.sourceforge.jtds.jdbc.SharedSocket.(SharedSocket.java:257) 在 net.sourceforge.jtds.jdbc.ConnectionJDBC2.(ConnectionJDBC2.java:第311章……还有6个

谁能帮我摆脱这个异常?

这是我的java代码

**Class.forName("net.sourceforge.jtds.jdbc.Driver");

连接连接 = DriverManager.getConnection("jdbc:jtds:sqlserver://mindmill:1433/employ","mahesh","mahesh");**

【问题讨论】:

  • 尽快以 stakoverflow 格式格式化问题...
  • 我之前在使用 jtds 驱动程序时遇到了一些问题,请问您可以发布您的 JDBC URL 吗?可能你没有正确设置Sql Server实例,关闭了实例或者为Sql Server实例禁用了TCP/IP客户端协议。
  • 我将 jtds.jar 放在我的 netbeans 项目库文件夹中

标签: java sql-server-2005 timeout


【解决方案1】:

正如jTDS FAQ 所述,URL 必须采用以下格式

jdbc:jtds:<server_type>://<server>[:<port>][/<database>][;<property>=<value>[;...]]

从你的连接推断:

  • mindmill 是安装 Sql Server 2005 的 your_computer/server 的名称。
  • 1433 是连接 Sql Server 2005 的(默认)端口。
  • employ 是数据库名称。
  • ma​​hesh 是您连接服务器的用户名和密码。

从这里开始,您必须设置其他 sql 连接参数。我会把我的代码发给你:

package edu.jtds.main;

import java.sql.*;

public class SqlServerConnTest {

    Connection conn;

    public void connect() {
        try {
            Class.forName("net.sourceforge.jtds.jdbc.Driver");
            String dbName = "TestDB";
            String user = "cajeroUpz";
            String password = "cajero";
            //the name of my SQL SERVER 2005 instance
            String SqlServerInstance = "instance=SQL2005";
            String url = "jdbc:jtds:sqlserver://localhost:1433";
            url = url + "/" + dbName;
            url = url + ";" + SqlServerInstance;
            conn = DriverManager.getConnection(url, user, password);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public Connection getConnection() {
        return this.conn;
    }

    public static void main(String[] args) {
        SqlServerConnTest oSqlServerConnTest = new SqlServerConnTest();
        oSqlServerConnTest.connect();
        String sql = "SELECT * FROM TEST_TABLE";
        Connection conn = null;
        Statement stat = null;
        ResultSet rs = null;
        try {
            conn = oSqlServerConnTest.getConnection(); 
            stat = conn.createStatement();
            rs = stat.executeQuery(sql);
            while(rs.next()) {
                System.out.println(String.format("%d %s", 
                    rs.getInt(1), rs.getString(2)));
            }
            rs.close();
            stat.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

我的程序的输出:

1 hello world
2 goodbye!

这里的教训:

  1. 从 SQL Server 2005 及更高版本开始,您必须设置实例的名称(如上例)。
  2. 在 SQL Server 中,你必须检查你的 TCP/IP 协议是否启用,并且通讯端口是 1433(这最后一个是默认设置的,检查一下就可以了)。您可以使用 SQL Server 2005 配置工具中的 SQL Server 配置管理启用/禁用。

还有什么问题,直接告诉我吧。

编辑:

最好的情况是,如果您已经尝试将您的电脑作为服务器连接,我的意思是您的电脑必须安装 Sql Server 2005,安装 NetBeans 并且项目已经设置并运行(作为概念证明连接数据库)。

即使您之前没有执行此步骤,在尝试连接远程服务器之前,您也应该回答一系列问题:

  1. 您是否检查过您的电脑和主机之间的通信?在您的情况下,提示命令行(开始/运行...键入“cmd”并回车)并输入命令“ping mindmill”,检查服务器的主机名。
  2. 您是否在您的 PC 中安装了 Sql Server Management Studio 并连接到您的服务器?你的服务器允许远程连接吗? Help 1
  3. 用户是否有足够的权限连接数据库? Help 2

在您之前回答过这些问题之后再告诉我任何问题。

【讨论】:

  • 我应该在我的操作系统中创建任何 DNS。我所做的只是将 jtds.jar 放在我的 netbeans 项目库文件夹中。我的项目方案是从服务器数据库访问一个表,为此我正在遵循上述程序。请建议我我不知道数据库和服务器数据库访问
  • 您运行项目的PC必须与您的服务器连接,您可以在控制台上使用ping命令进行尝试,例如ping 192.168.1.11(从您的服务器替换 ip)。如果服务器响应正常,请尝试将 Sql Server 与 Sql Server Management Studio (Express Edition for Windows here) 连接。另一个连接问题问题已处理here。请问您的操作系统是什么?
  • @mahesh 抱歉,我没有把你的名字放在我的评论中,现在你可以查看你的收件箱了 :)
  • 我收到以下异常::::::::java.sql.SQLException: Network error IOException: Connection timed out: connect
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-02
  • 2010-10-26
  • 1970-01-01
  • 2012-06-14
  • 1970-01-01
相关资源
最近更新 更多