1.
准备工作
首先,操作系统中安装好SQL Server 2000/2005,如果系统中都装有2000和2005版,记得停用一个,只开一个行了。
然后,到微软网站下载Microsoft SQL Server 2005 JDBC Driver 1.1 。
解压sqljdbc_1.1.1501.101_chs.exe,把sqljdbc_1.1复制到%ProgramFiles%(如果系统在C盘则为C:\Program Files)。
设置 Classpath
JDBC 驱动程序并未包含在 Java SDK 中。因此,如果要使用该驱动程序,必须将 classpath 设置为包含 sqljdbc.jar 文件。如果 classpath 缺少 sqljdbc.jar 项,应用程序将引发“找不到类”的常见异常。
sqljdbc.jar 文件的安装位置如下:
<安装目录>\sqljdbc_<版本>\<语言>\sqljdbc.jar
下面是用于 Windows 应用程序的 CLASSPATH 语句实例:
CLASSPATH =.;
%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
下面是用于 Unix/Linux 应用程序的 CLASSPATH 语句实例:
CLASSPATH =.:/home/usr1/mssqlserver2005jdbc/Driver/sqljdbc_1.1/chs/sqljdbc.jar
注意: 在 Window 系统中,如果目录名长于 8.3 或文件夹名中包含空格,将导致 classpath 出现问题。如果怀疑存在这类问题,应暂时将 sqljdbc.jar 文件移动到名称简单的目录中,例如 C:\Temp
,更改 classpath,然后测试这样是否解决了问题。
在操作系统中配置 classpath。将 sqljdbc.jar 追加到系统的 classpath 中。或者,使用 java -classpath
选项,可以在运行此应用程序的 Java 命令行上指定 classpath。
设置SQL Server服务器
我使用的是SQL Server 2005标准版SP2,这些都默认即可,一般不用配置。如果需要配置端口请看下面。
1、“开始”→“程序”→“Microsoft SQL Server 2005”→“配置工具”→“SQL Server 配置管理器”→“SQL Server 2005 网络配置”→“MSSQLSERVER 的协议”
2、如果“TCP/IP”没有启用,右键单击选择“启动”。
3、双击“TCP/IP”进入属性设置,在“IP 地址”里,可以配置“IPAll”中的“TCP 端口”,默认为1433。
4、重新启动SQL Server或者重启计算机。
创建数据库
打开“SQL Server Management Studio”,登录连接SQL Server服务器,新建数据库,命名为test
在Eclipse中测试
1、打开Eclipse,“文件”→“新建”→“项目”→“Java 项目”,项目名为Test
2、在Eclipse中,选择“窗口”→“首选项...”→“Java”→“已安装的 JRE”,选择已安装的 JRE,点击“编辑”→“添加外部”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
3、在Test项目的“JRE 系统库”中可以看见sqljdbc.jar,如果没有可以
右键单击项目Test→“构建路径”→“配置构建路径...”→“Java 构建路径”→“库”→“添加外部 JAR...”,选择%ProgramFiles%\sqljdbc_1.1\chs\sqljdbc.jar
编写Java代码,如下:
4、
import java.sql.*;
public class Test {
public static void main(String[] srg) {
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver"; //加载JDBC驱动
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=test"; //连接服务器和数据库test
String userName = "sa"; //默认用户名
String userPwd = "123456"; //密码
Connection dbConn;
try {
Class.forName(driverName);
dbConn = DriverManager.getConnection(dbURL, userName, userPwd);
System.out.println("Connection Successful!"); //如果连接成功 控制台输出Connection Successful!
} catch (Exception e) {
e.printStackTrace();
}
}
}
注:
1、因为SQL Express这个版本的服务器默认是禁用的并且端口号没有配置,所以要进行重新设置
2、如果你以前用Java连接SQL Server 2000的话就要注意了:
在SQL Server 2000 中加载驱动和URL路径的语句是
String driverName = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
String dbURL = "jdbc:microsoft:sqlserver://localhost:1433; DatabaseName=sample";
而SQL Server 2005 中加载驱动和URL的语句则为
String driverName = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
String dbURL = "jdbc:sqlserver://localhost:1433; DatabaseName=sample";
如果写法错误将会找不到驱动。
2.JSP连接SQL2000的时候出现问题,SP4补丁已经打过了,端口也开启了.出现如下问题:
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC][SQLServer]对象名 'sf_testpaper' 无效。 at com.microsoft.jdbc.base.BaseExceptions.createException(Unknown Source) at com.microsoft.jdbc.base.BaseExceptions.getException(Unknown Source)....
解决方法:
将DbConnection dbConnection=new DbConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=abc");
改为:DbConnection dbConnection=new DbConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=abc");
不知道莫名其妙的不认识localhost.弄了一天了......
——————————————————————————————————————————————————————
PS:通过各种尝试和摸索,发现上面文章写的做法可以改进:
环境:JDK1.6.0.30+TomCat6.0+MyEclipse8.5+sqljdbc_3.0.1301.101_chs
做法:
【Classpath不用再环境变量里配置;】
【Eclipse中,选择“窗口”→“首选项...”→“Java”→“已安装的 JRE,这个也是不需要的;】
关于JDBC文件,首先下载,然后解压把sqljdbc4.jar拷贝到WEB_INF/lib下,然后刷新一下项目即可。
至于用sqljdbc4.jar与用sqljdbc.jar的区别,就是上文转载提到的“驱动URL路径”的区别。sqljdbc4.jar对应2005数据库写法,sqljdbc.jar的对应2000数据库的写法。但是sqljdbc4.jar不必须连接2005数据库,连接2000的也是可以的。
另外最后需要注意的是,SQL2000必须打上SP4补丁。不然是无法连接成功的。
参考DEMO代码:
<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*,java.util.*" errorPage="" %>
<%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>无标题文档</title>
</head>
<body>
<%
Connection con;
Statement sql;
ResultSet rs;
try
{
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con=DriverManager.getConnection("jdbc:sqlserver://localhost:1433;DatabaseName=pubs;","sa","sa");
sql = con.createStatement();
rs = sql.executeQuery("select * from jobs");
rs.next();
out.println(rs.getString("job_desc"));
rs.close();
sql.close();
con.close();
}
catch(SQLException ex)
{
out.println(ex);
}
%>
</body>
</html>