今天,在测试一个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年发布的,不推荐使用了)
然后编写程序测试
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 方法加载驱动程序)将继续工作,而无需修改。
我们使用的是SDK1.6.0版本,因此直接使用sqljdbc4.jar包就可以了,将它复制到C:\Program Files\Java\jdk1.6.0_14\jre\lib\ext目录下就OK了,然后就可以编写程序测试了。
sqljdbc包测试代码
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测试代码:
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在编写代码方面的一些区别,确实增强了不少,写代码不要那么繁琐了。
以上是我总结的一些心得,有不对的地方大家可以指教。