今天,在测试一个JDBC连接SQL Server2000数据库的程序,发现死活连接不上SQL Server2000数据库。后来,在网上搜索了一些资料,折腾了半天,还是无果。于是乎,继续在网上Serching...,终于发现了问题所在,现将连接SQL Server2000数据库的经验总结如下:

1、首先必须安装JAVA开发工具SDK和JRE

目前最新版本是JDK 6 Update 14

2、安装SQL Server 2000数据库,安装完后,切记一定要下载并安装 SQL Server 2000 Service Pack 4 (SP4),这是对 SQL Server 2000 的最新、最全面的更新。

(我今天就是栽在这里了,整了半天也没连接上,后来才知道是没安装SP4,高手你就别偷着乐了,俺是新手,新手都这样)

3、配置Eclipse环境。我用的3.4.2最新版本。在window-Preferences菜单下的Java-Installed JREs中,选择Search,然后指定安装的JDK环境,它会自动添加jdk1.6.0_14,因为安装的jdk1.6.0_14目录下本身就带有一个jre环境,所以直接指向jdk1.6.0_14就OK了,我也是查看了eclipse帮助推荐设置的。

4、下载SQL Server 2000 Driver for JDBC Service Pack 3。安装后将msbase.jar、mssqlserver.jar、msutil.jar三个文件复制到C:\Program Files\Java\jdk1.6.0_14\jre\lib\ext目录下就OK了。在网上查看资料说还要配置CLASSPATH=.;[安装目录]\lib\msbase.jar;[安装目录]\lib\mssqlserver.jar;[安装目录]\lib\msutil.jar,可是我配置了也没起什么作业,于是乎就不配置了,直接将三个文件拷贝到C:\Program Files\Java\jdk1.6.0_14\jre\lib\ext目录下就OK了。(注意,这个方法已经过时了,2004年发布的,不推荐使用了)

然后编写程序测试

 

Code
import java.sql.*;

class connectURL{//本程序在jdk1.6.0下调试通过.
    public static void main(String args[])
    {
        String url = "jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Northwind";

        String user ="sa";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码
        String sqlStr = "select CustomerID, CompanyName, ContactName from Customers";

        try{    //这里的异常处理语句是必需的.否则不能通过编译!    
            Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
            System.out.println( "类实例化成功!" );

            Connection con = DriverManager.getConnection( url, user, password );
            System.out.println( "创建连接对像成功!" );

            Statement st = con.createStatement();
            System.out.println( "创建Statement成功!" );

            ResultSet rs = st.executeQuery( sqlStr );
            System.out.println( "操作数据表成功!" );
            System.out.println( "----------------!" );

            while(rs.next())
            {
                System.out.print(rs.getString("CustomerID") + "    ");
                System.out.print(rs.getString("CompanyName") + "    ");
                System.out.println(rs.getString("ContactName"));
            }
            rs.close();
            st.close();
            con.close();
        }
        catch(Exception err){
            err.printStackTrace(System.out);
        }
    }
}

 

5、下载 SQL Server JDBC Driver 2.0,这是一个 Type 4 JDBC 驱动程序,它通过 Java Platform, Enterprise Edition 5 中可用的标准 JDBC 应用程序编程接口 (API) 提供数据库连接。这是2009年4月3日发布的最新版本。推荐安装这个驱动。这个驱动有两个包:sqljdbc.jar和sqljdbc4.jar。我们看一下官方说明:

 

 

使用 sqljdbc.jar 类库时,应用程序必须首先按如下所示注册驱动程序:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

加载驱动程序后,可通过使用连接 URL 和 DriverManager 类的 getConnection 方法来建立连接:

String connectionUrl = "jdbc:sqlserver://localhost:1433;" +
   "databaseName=AdventureWorks;user=MyUserName;password=*****;";
Connection con = DriverManager.getConnection(connectionUrl);

在 JDBC API 4.0 中,DriverManager.getConnection 方法得到了增强,可自动加载 JDBC Driver。因此,使用 sqljdbc4.jar 类库时,应用程序无需调用 Class.forName 方法来注册或加载驱动程序。

调用 DriverManager 类的 getConnection 方法时,会从已注册的 JDBC Driver 集中找到相应的驱动程序。sqljdbc4.jar 文件包括“META-INF/services/java.sql.Driver”文件,后者包含 com.microsoft.sqlserver.jdbc.SQLServerDriver 作为已注册的驱动程序。现有的应用程序(当前通过使用 Class.forName 方法加载驱动程序)将继续工作,而无需修改。

注意: sqljdbc4.jar 类库要求使用 6.0 或更高版本的 Java 运行时环境 (JRE)。

 

我们使用的是SDK1.6.0版本,因此直接使用sqljdbc4.jar包就可以了,将它复制到C:\Program Files\Java\jdk1.6.0_14\jre\lib\ext目录下就OK了,然后就可以编写程序测试了。

sqljdbc包测试代码

Code
import java.sql.*;

class connectURL{//本程序在jdk1.6.0下调试通过.
    public static void main(String args[])
    {
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=Northwind";

        String user ="sa";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码
        String sqlStr = "select CustomerID, CompanyName, ContactName from Customers";

        try{    //这里的异常处理语句是必需的.否则不能通过编译!    
            Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
            System.out.println( "类实例化成功!" );

            Connection con = DriverManager.getConnection( url, user, password );
            System.out.println( "创建连接对像成功!" );

            Statement st = con.createStatement();
            System.out.println( "创建Statement成功!" );

            ResultSet rs = st.executeQuery( sqlStr );
            System.out.println( "操作数据表成功!" );
            System.out.println( "----------------!" );

            while(rs.next())
            {
                System.out.print(rs.getString("CustomerID") + "    ");
                System.out.print(rs.getString("CompanyName") + "    ");
                System.out.println(rs.getString("ContactName"));
            }
            rs.close();
            st.close();
            con.close();
        }
        catch(Exception err){
            err.printStackTrace(System.out);
        }
    }
}

sqljdbc4.jar测试代码:

Code
import java.sql.*;

class connectURL{//本程序在jdk1.6.0下调试通过.
    public static void main(String args[])
    {
        String url = "jdbc:sqlserver://localhost:1433;DatabaseName=Northwind";

        String user ="sa";//这里替换成你自已的数据库用户名
        String password = "";//这里替换成你自已的数据库用户密码
        String sqlStr = "select CustomerID, CompanyName, ContactName from Customers";

        try{    //这里的异常处理语句是必需的.否则不能通过编译!    
            Connection con = DriverManager.getConnection( url, user, password );
            System.out.println( "创建连接对像成功!" );

            Statement st = con.createStatement();
            System.out.println( "创建Statement成功!" );

            ResultSet rs = st.executeQuery( sqlStr );
            System.out.println( "操作数据表成功!" );
            System.out.println( "----------------!" );

            while(rs.next())
            {
                System.out.print(rs.getString("CustomerID") + "    ");
                System.out.print(rs.getString("CompanyName") + "    ");
                System.out.println(rs.getString("ContactName"));
            }
            rs.close();
            st.close();
            con.close();
        }
        catch(Exception err){
            err.printStackTrace(System.out);
        }
    }
}

大家可以比较一下sqljdbc.jar和sqljdbc4.jar在编写代码方面的一些区别,确实增强了不少,写代码不要那么繁琐了。

以上是我总结的一些心得,有不对的地方大家可以指教。