今天,在测试一个JDBC连接SQL Server2000数据库的程序,发现死活连接不上SQL Server2000数据库。后来,在网上搜索了一些资料,折腾了半天,还是无果。于是乎,继续在网上Serching...,终于发现了问题所在,现将连接SQL Server2000数据库的经验总结如下:
1、首先必须安装JAVA开发工具SDK和JRE。http://java.sun.com/javase/downloads/index.jsp
目前最新版本是JDK 6 Update 14
2、安装SQL Server 2000数据库,安装完后,切记一定要下载并安装 SQL Server 2000 Service Pack 4 (SP4),这是对 SQL Server 2000 的最新、最全面的更新。下载地址:http://www.microsoft.com/downloads/details.aspx?FamilyID=8e2dfc8d-c20e-4446-99a9-b7f0213f8bc5&DisplayLang=zh-cn
(我今天就是栽在这里了,整了半天也没连接上,后来才知道是没安装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在编写代码方面的一些区别,确实增强了不少,写代码不要那么繁琐了。
以上是我总结的一些心得,有不对的地方大家可以指教。