java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Error establishing socket.
转载;
【系统】
winxpsp3
【工具】
MyEclipse6.5
SQLServer2000个人版(升级到sp4 SQL版本8.00.2039)
SQLServer 2000 Driver for JDBC
【注意事项】
1.Test.java必须要处理SQLException和ClassNotFoundException两个异常,否则MyEclipse提示这两个异常不可控制;
2.遍历结果集的时候用While语句,用if(rs.next())只会输出结果集的第一条记录。
【步骤】
1.SQLServer2000个人版升级到SP4,没有装过SP3直接到SP4(SQL版本8.00.2039)
2.安装SQLServer 2000 Driver for JDBC,从它的安装目录下的lib目录下拷贝3个jar:mssqlserver.jar;msutil.jar;msbase.jar
到工程目录WebRoot\WEB-INF\lib\下(否则报错是Error Establish Socket)或者直接从MyEclipse下构建路径。
3.MyConnection.java
view plaincopy to clipboardprint?
package tff.messagebook.Database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MyConnection {
private String Driver;
private String Url;
private String UserID;
private String Password;
private Connection conn=null;
public MyConnection(){
this.Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
this.Url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=guestbook";
this.UserID="sa";
this.Password="";
}
public Connection getConnection() throws SQLException,ClassNotFoundException{
try{
Class.forName(this.Driver);
this.conn=DriverManager.getConnection(this.Url, this.UserID, this.Password);
}catch(SQLException e1){
e1.printStackTrace();
}catch(ClassNotFoundException e2){
e2.printStackTrace();
}
return this.conn;
}
public void close(){
try{
this.conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
package tff.messagebook.Database;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class MyConnection {
private String Driver;
private String Url;
private String UserID;
private String Password;
private Connection conn=null;
public MyConnection(){
this.Driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
this.Url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=guestbook";
this.UserID="sa";
this.Password="";
}
public Connection getConnection() throws SQLException,ClassNotFoundException{
try{
Class.forName(this.Driver);
this.conn=DriverManager.getConnection(this.Url, this.UserID, this.Password);
}catch(SQLException e1){
e1.printStackTrace();
}catch(ClassNotFoundException e2){
e2.printStackTrace();
}
return this.conn;
}
public void close(){
try{
this.conn.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
4.Test.java
view plaincopy to clipboardprint?
package tff.messagebook.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
public class Test {
public static void main(String[] args)throws SQLException,ClassNotFoundException {
MyConnection myc=new MyConnection();
Connection conn=myc.getConnection();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sql="select * from guestbook";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1)+"---"+rs.getString(2));
}
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
}
}
package tff.messagebook.Database;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.Connection;
public class Test {
public static void main(String[] args)throws SQLException,ClassNotFoundException {
MyConnection myc=new MyConnection();
Connection conn=myc.getConnection();
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
String sql="select * from guestbook";
ResultSet rs=stmt.executeQuery(sql);
while(rs.next()){
System.out.println(rs.getString(1)+"---"+rs.getString(2));
}
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
}
}
5.运行。
【报错记录】
1.如果
if(conn!=null){
conn.close();
}
if(stmt!=null){
stmt.close();
}
的顺序关闭错误,报错:
Exception in thread "main" java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for
JDBC]Socket closed
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.TDSRPCRequest.submitRequest(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSCursorRequest.closeCursor(Unknown Source)
at com.microsoft.jdbc.sqlserver.tds.TDSCursorRequest.completeRowProcessing(Unknown
Source)
at com.microsoft.jdbc.sqlserver.SQLServerImplResultSet.close(Unknown Source)
at com.microsoft.jdbc.base.BaseResultSet.close(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.commonTransitionToState(Unknown Source)
at com.microsoft.jdbc.base.BaseStatement.close(Unknown Source)
at tff.messagebook.Database.Test.main(Test.java:26)
【免责声明】
是为私人日志,如果您参考了此文,参考的后果自负。
【作者 zwdl 】
【参考文献】
地址:http://blog.csdn.net/yfrainy/archive/2009/07/08/4330070.aspx
原文:
一、准备环境
Windows XP+JDK5.0+Microsoft SQL Server 2000个人版+JCreator(或Eclipse)
下载数据库驱动程序SQL Server 2000 Driver for JDBC Service Pack 3.exe
http://www.microsoft.com/downloads/details.aspx?familyid=07287B11-0502-461A-B138-2AA54BFDC03A&displaylang=en#filelist
安装完毕后 在C:\Program Files\Microsoft SQL Server 2000 Driver for JDBC\lib
目录下有三个包msbase.jar mssqlserver.jar msutil.jar
1、在命令行下编译运行,配置环境变量 将这三个包的路径加入CLASSPATH中
2、在JCreator中 配置 选项 JDK配置文件 编辑 添加存档路径 添加三个包
3、在Eclipse此中 选择项目的构建路径——库—— 添加外部JAR 将这三个添加进去
二、出现的问题及解决办法
1、是不是出现了Error establishing socket之类的错误 呵呵
这是因为连接数据库的1433端口没打开 我们必须要下载SP3的补丁
http://download.microsoft.com/download/d/d/e/dde427eb-0296-4eac-a47c-d11a66b03816/chs_sql2ksp3.exe
SP4行不呢? 照理说SP4应该包括SP3 我也是这样想 下了个SP4 70多M 装好后
用NETSTAT -A -N 没发现TCP 1433被监听 UDP 1434没被监听 火啊 在网上找啊找
发现有位仁兄也遇见此类问题 问题就出在SP4补丁上 一定要打上SP3补丁才管用
微软官方有下 有三个文件 一定要下这个chs_sql2ksp3.exe 下别的也不行 因为我首先就下了个chs_sql2kdesksp3.exe 他妈的不知道是什么东西 也不能打开1433 装好chs_sql2ksp3.exe后重启
NETSTAT -A -N测试若发现1433被监听 TELNET 127.0.0.1 1433 能连接 那么恭喜你 软件环境可以准备好了
2、当然还有其他的问题比如防火墙设置比如SQL SERVER里的网络配置(TCP/IP默认端口是否是1433)不过一般在一般情况还是不需修改。
三、实例说明
下面是一个实例:
import java.sql.*;
public class ConSqlserver{
Connection con;
Statement st;
ResultSet rs;
public ConSqlserver(){
try{
String driver="com.microsoft.jdbc.sqlserver.SQLServerDriver";
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=pubs";
Class.forName(driver);
con=DriverManager.getConnection(url,"SA","密码");
System.out.println("连接成功!");
con.close();
}catch(Exception e){
e.printStackTrace();
}
}
public static void main(String args[]){
new ConSqlserver();
}
}
四、补充
写连接代码时需要注意2000和2005的不同:
1、连接SqlServer2000
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
URL = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=tempdb";
2、连接SqlServer2005
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver").newInstance();
URL = "jdbc:sqlserver://localhost:1433;DatabaseName=tempdb";
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhs1931/archive/2009/09/24/4588151.aspx
分享到:
相关推荐
前几天在研究C/C++链接SQL server数据的方法,前前后后在网上找了不少的文章,大多数文章都没法真正的解决入门新手的全部疑惑,所以在此整理一下自己整个连接数据库的过程,希望能帮到有需要的人。
DBeaver连接sqlserver驱动,用于解决DBeaver不能下载驱动问题。请参见压缩包中的说明方法放置。
asp.net 2.0+SQL Serer 2005全程指南源码
理学调用SQLSerer数据库PPT学习教案.pptx
计算机软件及应用SQLSerer管理工具PPT课件.pptx
SQL SERER根据阿拉伯数字转换支票打印所需亿..元角分
计算机软件及应用SQLSerer管理工具PPT学习教案.pptx
计算机软件及应用SQLSerer实用教程PPT学习教案.pptx
再help 注册码里面输入文本文件的注册码就可以。 win10 x64测试有效。
jdk1.5使用---》sqljdbc.jar jdk1.6使用--》sqljdbc4.jar
sqlserver直连必备,希望大家能用到!!!
注意里面有个生成序列号的注册机 一般情况下杀毒软件都会把它误认为是病毒。 所以在生成注册码时记得关掉杀毒软件。
SQLPrompt智能提示工具(文件含安装包及安装说明):根据SQL语法和数据库内容自动检测并提示SQL,方便SQL初学者和对数据库表结构不熟悉的开发者编写SQL语句。
关于SQL-Serer数据库安全的研究.docx
SQL SERER 2000 工具.压缩形式,从朋友那里要的,有需要的就下载吧。
学习课程时,一直找不到试卷,终于在考试前一天由同学传来一套,的却和考试形式内容上都很像 不错的考前复习资料
在安装SQL2005时出错,解决方案 1、SQL SERVER 2005安装过程中COM+错误解决 2、安装SQL Server 2005性能监视器计数器要求 (错误) 3、安装sql2005时''无法在com+目录中安装和配置程序集
微软 SQL Server 2016 正式版将分为四个版本,分别是企业版 (Enterprise)、标准版(Standard)、速成版(Express)和开发人员版本(Developer)。 SQL Server 2016 也同样提供免费版本,其中 Express 速成版和 ...
SQL+Serer+2008+群集配置指南Windows+200
jsp +SQL server用 连接池做的实验室设管理系统 ,包含数据导出,公告管理,设备信息管理,损坏管理,报废管理,文件下载,人员管理等,自己做的,仅供参考! 运行方法:把DevMg 文件放在webapps 下面 3.在tomcat ...