无法从 Sql Server 2005 获取数据(连接超时异常)
Posted
技术标签:
【中文标题】无法从 Sql Server 2005 获取数据(连接超时异常)【英文标题】:Unable to get data from Sql Server 2005 (connection time out exception) 【发布时间】: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 格式格式化问题... ***.com/… 我之前在使用 jtds 驱动程序时遇到了一些问题,请问您可以发布您的 JDBC URL 吗?可能你没有正确设置Sql Server实例,关闭了实例或者为Sql Server实例禁用了TCP/IP客户端协议。 我将 jtds.jar 放在我的 netbeans 项目库文件夹中 【参考方案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 是数据库名称。 mahesh 是您连接服务器的用户名和密码。从这里开始,您必须设置其他 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!
这里的教训:
-
从 SQL Server 2005 及更高版本开始,您必须设置实例的名称(如上例)。
在 SQL Server 中,你必须检查你的 TCP/IP 协议是否启用,并且通讯端口是 1433(这最后一个是默认设置的,检查一下就可以了)。您可以使用 SQL Server 2005 配置工具中的 SQL Server 配置管理启用/禁用。
还有什么问题,直接告诉我吧。
编辑:
最好的情况是,如果您已经尝试将您的电脑作为服务器连接,我的意思是您的电脑必须安装 Sql Server 2005,安装 NetBeans 并且项目已经设置并运行(作为概念证明连接数据库)。
即使您之前没有执行此步骤,在尝试连接远程服务器之前,您也应该回答一系列问题:
-
您是否检查过您的电脑和主机之间的通信?在您的情况下,提示命令行(开始/运行...键入“cmd”并回车)并输入命令“ping mindmill”,检查服务器的主机名。
您是否在您的 PC 中安装了 Sql Server Management Studio 并连接到您的服务器?你的服务器允许远程连接吗? Help 1
用户是否有足够的权限连接数据库? 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以上是关于无法从 Sql Server 2005 获取数据(连接超时异常)的主要内容,如果未能解决你的问题,请参考以下文章
无法从 Vista x64 Windows 服务连接到 SQL Server 2005 Db
sql server 2005数据库检索时,出现无法为此请求检索数据的问题
什么是自动从 2005 数据库同步 sql server 2008 数据库的好方法?
Sqoop - 错误工具.ImportTool:导入失败:尝试从 SQL Server 导入时无法转换 SQL 类型 2005