本来这个问题是老问题了,但是,查了网上的中文资料,实在是...,要么是讲得不清楚,要不就是环节有问题,
CSDN论坛中细细翻阅FAQ中讲得只是JSP代码连接SQL Server,及略带讲述必须安装Microsoft JDBC驱动,只好细细翻阅
CSDN论坛贴子,并亲自操刀实践了多次,现总结如下:
情况比想象中的要坏得多:调了一个多小时,终于连接到SQL Server2000,很恼火啊,呵呵!
1. 安装Microsoft JDBC Driver
勿庸多言,按“下一步”完成安装。
2. 配置
先讲一下环境变量的作用:
JAVA_HOME变量:用于设定JAVA开发包所在目录
TOMCAT_HOME变量:用于设定TOMCAT伺服器所在目录
CLASSPATH变量:被编译的java或jsp文件中import一些类库(如java.io.*, java.lang.*等),当编译程序javac.exe编译java或jsp文件时,必须要知道这些类库所在路径。所以,CLASSPATH是用于设定java类库
的搜索路径,通常需要在CLASSPATH中设置值: %JAVA_HOME%\lib。当安装完Microsoft JDBC Driver后,还需要加入: %JDBC_INSTALL_PATH%\lib\msbase.jar;%JDBC_INSTALL_PATH%\lib\mssqlserver.jar;%JDBC_INSTALL_PATH%\msutil.jar
注意:%JDBC_INSTALL_PATH%是安装Microsoft JDBC Driver的目录,例如,设置这个环境变量JDBC_INSTALL_PATH = "c:\program files\microsoft jdbc driver"
path变量: 用于设置java.exe(执行已编译后的class), javac.exe(编译java文件为class)等执行文件的路径, 例如,可以在dos控制台下直接键入javac.exe,而不用切换到javac.exe所在目录再执行javac.exe。
3. 要点
一定要记得在安装完成Microsoft JDBC后,将安装目录中的lib目录下三个jar文件:
msbase.jar, mssqlserver.jar, msutil.jar拷贝到Tomcat目录下common\lib目录下,之后,
必须重新启动Tomcat!这样做的目的是,jsp页面在编译过程中不会出现找不到sql server driver类库的问题.
但我实在是不明白:%JAVA_HOME%\lib已被设置为默认的库路径,当我把Microsoft JDBC Driver的三个jar文件:msbase.jar,mssqlserver.jar,msutil.jar拷贝到%JAVA_HOME%lib中后(%JAVA_HOME%\jre\lib也作了测试,并且设置了相应的CLASSPATH,结果一样),然后运行jsp页面,却还仍然提示找不到驱动程序类库。
难道,TOMCAT只识别自已的common\lib目录下的类库?
4. 连接SQL Server 2000的JSP代码
<%@ page import="java.lang.*, java.io.*, java.sql.*, java.util.*" contentType="text/html; charset=EUC_CN" %>
<html>
<body>
<%
Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver").newInstance();
String url="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=OA"; // OA是数据库名称
String user="sa";
String password="";
Connection conn= DriverManager.getConnection(url,user,password);
Statement stmt=conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
String sql="select * from MEMBERS_INFO"; // MEMBERS_INFO是表名
ResultSet rs=stmt.executeQuery(sql);
while(rs.next())
{
%>
您的第一个字段内容为:<%=rs.getString(1)%>
您的第二个字段内容为:<%=rs.getString(2)%>
<%
}
%>
<%out.print("数据库操作成功,恭喜你");%>
<%
rs.close();
stmt.close();
conn.close();
%>
</body>
</html>