`
phoebird
  • 浏览: 117771 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

JDBC 连接sql serer 2000

阅读更多

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++使用ODBC连接SQL server数据库完整流程

    下面将详细介绍如何使用ODBC在C/C++中连接SQL Server数据库的完整流程。 1. **环境准备**: - 首先确保安装了SQL Server数据库,并且创建了一个可供C/C++程序使用的数据库。 - 安装SQL Server的ODBC驱动,如SQL ...

    SpringBoot整合Mybatis连接SQL Server 跨库批量插入

    对于Mybatis的支持,我们需要添加Mybatis和其Spring Boot Starter的依赖,同时由于我们要连接SQL Server,还需要SQL Server的JDBC驱动。在`pom.xml`文件中,可以这样配置: ```xml <groupId>org.spring...

    sqlserer驱动包

    它是连接到SQL Server的基石,包含JDBC接口的实现。 3. mssqlserver.jar:这是SQL Server特有功能的实现库,它包含了针对SQL Server的特定优化和功能,例如对TDS(Tabular Data Stream)协议的支持,TDS是SQL ...

    sql2008R2驱动包

    总的来说,"sql2008R2驱动包"是连接Java应用程序与SQL Server 2008 R2的关键组件,正确选择和使用JDBC驱动能确保你的Java应用能够高效、稳定地与数据库进行交互。无论是sqljdbc.jar还是sqljdbc4.jar,它们都为Java...

    SQL SERER根据阿拉伯数字转换支票打印所需亿..元角分

    SQL SERER根据阿拉伯数字转换支票打印所需亿..元角分

    Toad for sqlserer 6.6注册码

    再help 注册码里面输入文本文件的注册码就可以。 win10 x64测试有效。

    sqlSerer2005智能提示插件

    注意里面有个生成序列号的注册机 一般情况下杀毒软件都会把它误认为是病毒。 所以在生成注册码时记得关掉杀毒软件。

    理学调用SQLSerer数据库PPT学习教案.pptx

    每个数据提供器对应一种数据源,如SqlClient提供器用于连接SQL Server,OracleClient提供器用于连接Oracle数据库。 5. **数据集(DataSet)和数据适配器(DataAdapter)**: 数据集(DataSet)是断开式连接模式的...

    计算机软件及应用SQLSerer管理工具PPT学习教案.pptx

    本文主要介绍了如何使用SQL Server的各种管理工具,包括启动和停止服务、注册和连接服务器、配置服务器以及使用企业管理器和查询分析器。 1. **启动和停止SQL Server服务** - 在Windows服务管理器中,可以通过手动...

    SQL Server 2000 数据库试卷 一套附答案

    【SQL Server 2000】是一个关系型数据库管理系统,由微软公司开发,它提供了强大的数据存储、管理和分析功能。关系型数据库系统意味着其数据是以表格形式存储,每个表格(或称表)由一系列行和列组成,每行代表一条...

    asp.net 2.0+SQL Serer 2005全程指南源码

    《ASP.NET 2.0+SQL Server 2005全程指南源码》是一份针对初学者和进阶开发者的学习资料,它包含了使用ASP.NET 2.0与SQL Server 2005进行Web应用程序开发的完整代码示例。这份源码集能够帮助读者深入理解这两个关键...

    sql2000服务器组件在此操作系统上不受支持

    SQL Server 2000 在 Windows XP 系统上安装的解决方案 在 Windows XP 操作系统上安装 SQL Server 2000 服务器版可能会遇到“服务器组件在此操作系统上不受支持”的错误提示。本文将指导读者如何解决这个问题,并...

    计算机软件及应用SQLSerer管理工具PPT课件.pptx

    无论是启动和停止服务,还是连接和配置服务器,或者是进行复杂的查询和数据库管理,SQL Server的管理工具都提供了强大的支持。掌握这些工具的使用,将极大地提升数据库管理效率和数据分析能力。

    SQL SERVER智能提示工具.rar

    SQLPrompt智能提示工具(文件含安装包及安装说明):根据SQL语法和数据库内容自动检测并提示SQL,方便SQL初学者和对数据库表结构不熟悉的开发者编写SQL语句。

    数据库驱动包(ms-sqlserver,sqlServer,oracle,mysql)

    SQL Server驱动通常是指用于连接到SQL Server的JDBC或ODBC驱动,如SQL Server JDBC Driver,它允许Java应用程序通过JDBC接口与SQL Server交互。 3. Oracle驱动: Oracle数据库驱动程序支持Oracle数据库系统,这是...

    计算机软件及应用SQLSerer实用教程PPT学习教案.pptx

    在SQL Server中,数据类型是定义列或变量能够存储何种类型的数据的关键元素。这个实用教程主要介绍了SQL Server中常见的数据类型,包括数值类型、字符类型、日期和时间类型以及特殊的文本和图形及货币数据类型。 1....

    SQL_SERVER_2000

    SQL SERER 2000 工具.压缩形式,从朋友那里要的,有需要的就下载吧。

    学生管理系统(SQL Server)

    通过Java的JDBC(Java Database Connectivity)API,开发者可以编写SQL语句来操作数据库。此外,Java的面向对象特性使得代码结构清晰,易于维护。Spring框架可能被用于提供依赖注入、事务管理和数据访问接口,简化...

    Sql Server高级查询练习题及答案

    在SQL Server中,高级查询是数据库管理与分析的关键技能,特别是在使用子查询、内外连接等技术时。这些功能使得我们能够处理复杂的数据关系,提取出有价值的信息。以下将详细讲解这些知识点。 首先,子查询是SQL中...

    安装SQL Server 2005 出错

    在安装SQL2005时出错,解决方案 1、SQL SERVER 2005安装过程中COM+错误解决 2、安装SQL Server 2005性能监视器计数器要求 (错误) 3、安装sql2005时''无法在com+目录中安装和配置程序集

Global site tag (gtag.js) - Google Analytics