JDBC连接SQLServer时出现错误Error establishing socket.的解决。
2012-10-17 16:41
806 查看
一次在重装系统并重新搭建 JAVA 运行环境后,为了测试运行环境是否搭建好,写了一个非常简单的 JDBC 程序测试数据库连接。
IDE : Eclipse3.2
DB : SQLServer2000
Driver : MS 的官方驱动: msbase.jar 、 mssqlserver.jar 、 msutil.jar
源程序如下:
文件名: SqlServerTest.java
package test;
import java.sql.*;
/**
* @author lpeter SQLServer 连接测试
*/
public class SqlServerTest {
// 驱动类
static String driverClass =
"com.microsoft.jdbc.sqlserver.SQLServerDriver" ;
// 连接字符串
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test";
// 密码
static String password = "peter" ;
// 用户名
static String username = "peter" ;
// 待执行的 SQL 语句
static String sql = "SELECT
* FROM Test" ;
public static void main(String[] args)
{
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
try {
Class.forName( driverClass );
conn = DriverManager.getConnection( url , username, password );
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
while (rs.next()) {
System. out .println( "OK." );
}
System. out .println( "OK too." );
rs.close();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
System. out .println( " 驱动类没有找到 ." );
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs != null ) // 结果集没有关闭时关闭结果集
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (pstmt != null ) // 发送对象没有关闭时关闭发送对象
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (conn != null ) // 连接没有关闭时关闭连接
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
执行这段程序时,出现错误:
java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:523 )
at java.sql.DriverManager.getConnection(DriverManager.java:171 )
at test.SqlServerTest.main( SqlServerTest.java:29 )
出现了这个错误,我马上想到连接字符串有问题。可在网上找了好几个版本都是这样。
后来由于某种偶然原因,我知道了 SQLServer 可以设置查看端口号。步骤如下:
1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server组,列出一部分数据库服务器。
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,我在这里看到我的默认端口是: 4067 。因面在使用 1433连接数据库时出错。
把端口号修改为 4067 即修改:
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test";
为:
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:4067;dataBaseName=Test";
后,执行程序,输出: OK too.
测试连接成功。
# re:
2007-12-07 00:19 by Angela
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Type4 {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();
System.out.println("数据库驱动程序注册成功!");
String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind";
String user = "sa";
String password = "sa";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
}
}
数据库驱动程序注册成功!
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at Type4.main(Type4.java:14)
数据库连接失败
# re:
2007-12-07 00:22 by Angela
端口号是1433,但还是连接不上
不知道怎么搞,请高手指点,谢谢!
# re:
2007-12-07 12:44 by 李鹏
@Angela
可以先查看端口号是否打开
在CMD中输入命令: netstat 看有没有1433
# re:
2008-01-04 15:55 by rock
你的系统是XP第二版吧? XP第二版不支持JDBC连接 我一般使用ODBC 我用JDBC时也是出现你那个错误
# re:
2008-01-15 11:56 by dd
@Angela
打上sp4补丁试试
# re:
2008-01-17 14:56 by Angela
早解决了啊!谢谢啊!
是sql没有打补丁!
# re:
2008-02-23 21:00 by 小刀
你是怎么解决的啊?
教教小弟啊。
# re:
2008-03-06 17:20 by 思春帖调查员
楼上的.
你给sqlserver 打个sp3补丁就行了
否则windows 2003下即使端口设置正确也会出现以上错误.
# re:
2008-03-30 23:38 by 文文
我的是XP啊
还是中文的啊
可是SP3不是还没有中文的吗
那怎么办啊!~
# re:
2008-04-26 16:11 by xiaolong
我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
后来 我用 CMD 命令 NETSTAT 查 1433 的 端口 有没有 打开 可是 居然没有 我把 SQL的企业管理器 重起 依然如故 我快崩溃了!!! 哪位大哥 能不能 解决一下!!!
# re:
2008-07-10 20:46 by superman
这种情况只有重装sqlserver了!
# re:
2008-09-12 23:26 by hokel
在本地服务器的网络配置的TCP\IP的属性值是1433,但是在cmd中以netstat查看端口号却没有1433,使得JDBC连接SQLServer时出现错误Error establishing socket.无法解决请大哥指点指点!
# re:
2008-11-19 15:58 by longlongago
我也是上面的那个问题.
我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然没有没有打开
我把 SQL的企业管理器 重起 依然如故!
# re:
2008-12-03 17:42 by fxf
是应该升级到sqlsp3包
# re:
2008-12-06 00:04 by nimama
我也是上面的那个问题.
我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然没有没有打开
我把 SQL的企业管理器 重起 依然如故!
# re:
2009-01-17 14:28 by liuchuan
@Angela
我的系统是Windows Server 2000系统、数据库是SQLServer 2000的,打的是SP4的补丁,连接数据库时有时候能连接上,有时候连接不上,报的错误也是Error establishing socket。有没有知道的,帮忙解决一下吧!
# re:
2009-03-03 01:35 by qiandy
用 CMD 命令NETSTAT查1433(这是默认的端口,可能被占用,你可以重新设一个新的端口)的端口可是居然没有没有打开,先看看你的服务器有没有打开,如果都大开了那就说明你没有装sp3或sp4的补丁.
还有一个方法看你是不是要打补丁,那就是看看你的版本号:
可以用如下的方式查看MSSQL的版本:
打开企业管理器-〉工具-〉SQL查询分析器-〉帮助-〉关于
查看MSSQL的详细版本号
如果 是 8.00.194 就是还没打补丁
8.00.760 就是SP3
8.00.2039 就是SP4
如果你的版本号是对的,但NETSTAT查1433没有,那可能你的1433端口被占了,换一个端口应该就可以了.
换端口的方法是:1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组,列出一部分数据库服务器。
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,一般默认端口是:1433。
# re:
2009-03-03 01:40 by qiandy
如果还是错,那就可能是你代码中的ip或端口错了,应该不是用户名和密码问题,因为用户名和密码错了,不是报socket错误
IDE : Eclipse3.2
DB : SQLServer2000
Driver : MS 的官方驱动: msbase.jar 、 mssqlserver.jar 、 msutil.jar
源程序如下:
文件名: SqlServerTest.java
package test;
import java.sql.*;
/**
* @author lpeter SQLServer 连接测试
*/
public class SqlServerTest {
// 驱动类
static String driverClass =
"com.microsoft.jdbc.sqlserver.SQLServerDriver" ;
// 连接字符串
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test";
// 密码
static String password = "peter" ;
// 用户名
static String username = "peter" ;
// 待执行的 SQL 语句
static String sql = "SELECT
* FROM Test" ;
public static void main(String[] args)
{
Connection conn = null ;
PreparedStatement pstmt = null ;
ResultSet rs = null ;
try {
Class.forName( driverClass );
conn = DriverManager.getConnection( url , username, password );
pstmt = conn.prepareStatement( sql );
rs = pstmt.executeQuery();
while (rs.next()) {
System. out .println( "OK." );
}
System. out .println( "OK too." );
rs.close();
pstmt.close();
conn.close();
} catch (ClassNotFoundException e) {
System. out .println( " 驱动类没有找到 ." );
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
if (rs != null ) // 结果集没有关闭时关闭结果集
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (pstmt != null ) // 发送对象没有关闭时关闭发送对象
try {
pstmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
if (conn != null ) // 连接没有关闭时关闭连接
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
执行这段程序时,出现错误:
java.sql.SQLException : [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:523 )
at java.sql.DriverManager.getConnection(DriverManager.java:171 )
at test.SqlServerTest.main( SqlServerTest.java:29 )
出现了这个错误,我马上想到连接字符串有问题。可在网上找了好几个版本都是这样。
后来由于某种偶然原因,我知道了 SQLServer 可以设置查看端口号。步骤如下:
1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server组,列出一部分数据库服务器。
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,我在这里看到我的默认端口是: 4067 。因面在使用 1433连接数据库时出错。
把端口号修改为 4067 即修改:
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:1433;dataBaseName=Test";
为:
static String url =
"jdbc:microsoft:sqlserver://127.0.0.1:4067;dataBaseName=Test";
后,执行程序,输出: OK too.
测试连接成功。
Feedback
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2007-12-07 00:19 by Angelaimport java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class Type4 {
public static void main(String[] args) {
try {
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver")
.newInstance();
System.out.println("数据库驱动程序注册成功!");
String url = "jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=Northwind";
String user = "sa";
String password = "sa";
Connection conn = DriverManager.getConnection(url, user, password);
System.out.println("数据库连接成功");
} catch (Exception e) {
e.printStackTrace();
System.out.println("数据库连接失败");
}
}
}
数据库驱动程序注册成功!
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSConnection.<init>(Unknown Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.getNewImplConnection(Unknown Source)
at com.microsoft.jdbc.base.BaseConnection.open(Unknown Source)
at com.microsoft.jdbc.base.BaseDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(DriverManager.java:512)
at java.sql.DriverManager.getConnection(DriverManager.java:171)
at Type4.main(Type4.java:14)
数据库连接失败
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2007-12-07 00:22 by Angela端口号是1433,但还是连接不上
不知道怎么搞,请高手指点,谢谢!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。[未登录] 回复 更多评论
2007-12-07 12:44 by 李鹏@Angela
可以先查看端口号是否打开
在CMD中输入命令: netstat 看有没有1433
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。[未登录] 回复 更多评论
2008-01-04 15:55 by rock你的系统是XP第二版吧? XP第二版不支持JDBC连接 我一般使用ODBC 我用JDBC时也是出现你那个错误
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。[未登录] 回复 更多评论
2008-01-15 11:56 by dd@Angela
打上sp4补丁试试
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-01-17 14:56 by Angela早解决了啊!谢谢啊!
是sql没有打补丁!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。[未登录] 回复 更多评论
2008-02-23 21:00 by 小刀你是怎么解决的啊?
教教小弟啊。
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-03-06 17:20 by 思春帖调查员楼上的.
你给sqlserver 打个sp3补丁就行了
否则windows 2003下即使端口设置正确也会出现以上错误.
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-03-30 23:38 by 文文我的是XP啊
还是中文的啊
可是SP3不是还没有中文的吗
那怎么办啊!~
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-04-26 16:11 by xiaolong我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
后来 我用 CMD 命令 NETSTAT 查 1433 的 端口 有没有 打开 可是 居然没有 我把 SQL的企业管理器 重起 依然如故 我快崩溃了!!! 哪位大哥 能不能 解决一下!!!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。[未登录] 回复 更多评论
2008-07-10 20:46 by superman这种情况只有重装sqlserver了!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-09-12 23:26 by hokel在本地服务器的网络配置的TCP\IP的属性值是1433,但是在cmd中以netstat查看端口号却没有1433,使得JDBC连接SQLServer时出现错误Error establishing socket.无法解决请大哥指点指点!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-11-19 15:58 by longlongago我也是上面的那个问题.
我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然没有没有打开
我把 SQL的企业管理器 重起 依然如故!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-12-03 17:42 by fxf是应该升级到sqlsp3包
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2008-12-06 00:04 by nimama我也是上面的那个问题.
我 补丁 打了 驱动换了 端口 改了 环境 变量设置了 可是 错误依然!!
我用 CMD 命令 NETSTAT 查 1433 的 端口 可是 居然没有没有打开
我把 SQL的企业管理器 重起 依然如故!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2009-01-17 14:28 by liuchuan@Angela
我的系统是Windows Server 2000系统、数据库是SQLServer 2000的,打的是SP4的补丁,连接数据库时有时候能连接上,有时候连接不上,报的错误也是Error establishing socket。有没有知道的,帮忙解决一下吧!
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2009-03-03 01:35 by qiandy用 CMD 命令NETSTAT查1433(这是默认的端口,可能被占用,你可以重新设一个新的端口)的端口可是居然没有没有打开,先看看你的服务器有没有打开,如果都大开了那就说明你没有装sp3或sp4的补丁.
还有一个方法看你是不是要打补丁,那就是看看你的版本号:
可以用如下的方式查看MSSQL的版本:
打开企业管理器-〉工具-〉SQL查询分析器-〉帮助-〉关于
查看MSSQL的详细版本号
如果 是 8.00.194 就是还没打补丁
8.00.760 就是SP3
8.00.2039 就是SP4
如果你的版本号是对的,但NETSTAT查1433没有,那可能你的1433端口被占了,换一个端口应该就可以了.
换端口的方法是:1. 打开企业管理器,依次在控制台根目录 ->Microsoft SQL Servers->SQL Server 组,列出一部分数据库服务器。
2. 右击我们要连接的数据库服务器,选择属性,在常规选项卡点击网络配置弹出新窗口。
3. 在启用的协议区域我们选择 TCP/IP ,点击属性按钮,弹出新窗口。在这个窗口有网络协议默认值设置,一般默认端口是:1433。
# re:
JDBC连接SQLServer时出现错误Error establishing socket.的解决。 回复 更多评论
2009-03-03 01:40 by qiandy如果还是错,那就可能是你代码中的ip或端口错了,应该不是用户名和密码问题,因为用户名和密码错了,不是报socket错误
相关文章推荐
- JDBC连接SQLServer时出现错误Error establishing socket.的解决方法[端口问题引起]
- JDBC连接SQLServer时出现错误Error establishing socket.的解决。
- 解决出现[SQLServer 2000 Driver for JDBC]Error establishing socket.的错误
- 解决出现[SQLServer 2000 Driver for JDBC]Error establishing socket.的错误
- 用sql server2005的错误 java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket. 解决办法
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结
- 总结JDBC连接SQLServer的错误Error establishing socket
- 连接SQL Server2000报错[Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket解决方法
- 总结JDBC连接SQLServer的错误Error establishing socket
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket错误解决方法总结
- 总结JDBC连接SQLServer的错误Error establishing socket
- java操作数据库出现(][SQLServer 2000 Driver for JDBC]Error establishing socket.)的问题所在即解决办法
- 总结JDBC连接SQLServer的错误Error establishing socket(转)
- 解决java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket这个异常
- java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket解决
- 解决:SQLServer 2000 Driver for JDBC]Error establishing socket.
- Sqlserver 2008 error 40出现连接错误的解决方法
- [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket 错误
- 【数据库】 Sqlserver 2008 error 40出现连接错误的解决方法
- 解决java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket异常