在Struts中联接SQL Server数据库,期间遇到一些问题,与大家共享
本文基于的环境是,windows XP;Struts 1.2;Tomcat 5.0.28;JDK 1.4.2-09;SQL Server 2000个人版
1.
安装
SQL Server
数据库服务器,在安装的时候一般都是按照默认安装即可。在设置登录方式的时候,有两种选择方案。第一种:使用
Windows
身份验证;第二种:使用混合身份验证,即,用户即可以用
Windows
身份登录,也可以用
SQL Server
用户的身份访问数据库。本文在安装数据库时使用
Windows
身份验证。
2.
从微软的网站上下载
JDBC Driver
。有的朋友喜欢用
JDBC-ODBC
桥连接数据库,这并不是一种很正式的
java
中连接数据库的方法,使用这种方法连接数据库会丧失
Java
的跨平台性,即使在平常联系的时候也建议大家使用纯
JDBC
连接数据库。微软的下载
JDBC Driver
的网址为
http://www.microsoft.com/downloads/details.aspx?familyid=86212D54-8488-481D-B46B-AF29BB18E1E5&displaylang=en
。下载后直接运行程序安装即可。
3.
安装
SQL Server JDBC
后,通过点击【开始】
à
【所有程序】
à
【
Microsoft SQL Server 2000 Driver for JDBC
】可以阅读相关的说明文档。读者可以直接阅读
Quick start
一章,迅速连接数据库。
4.
本文所使用的
Web
服务器是
Tomcat
,因此可以将
%JDBC Driver HOME%/lib
目录下的
*.jar
文件,其实就是三个文件,
mssqlserver.jar
;
msutil.jar
;
msbase.jar
,拷贝到
%TOMCAT HOME%/common/lib
目录下,
Tomcat
在运行时会自动搜索这个目录下的文件。将三个库文件放到这个目录下能够保证
Tomcat
在运行时能够搜索到其中的文件。
5.
在
Struts
配置文件
struts-config.xml
文件中配置数据源。相关字段如下所示:
<
data-sources
>
<
data-source
key
=
"StrutsDB"
type
=
"org.apache.commons.dbcp.BasicDataSource"
>
<
set-property
property
=
"driverClassName"
value
=
"com.microsoft.jdbc.sqlserver.SQLServerDriver"
/>
<
set-property
property
=
"url"
value
=
"jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=Study"
/>
<
set-property
property
=
"username"
value
=
"sa"
/>
<
set-property
property
=
"password"
value
=
"jzy"
/>
</
data-source
>
</
data-sources
>
相关字段的含义在第三步的说明文档中有详细的描述,在此简要介绍如下:
<
data-sources
>
和
<
data-source
>
用来定义数据源,
<
data-sources
>
中可以有几个
<
data-source
>
。
<
data-source
>
中的
key
的值表示数据源的名称,
type
表示本数据源使用的类,一般都是固定的不需要改变。
<
set-property
>
用来设置驱动程序的类名,数据库连接
url
,登陆用户名和登陆用户密码。
在这里有一点需要注意,如果在
url
字符串后没有设置数据库的话,系统会默认选择
master
数据库,可以在
url
最后以分号分隔,并指定需要打开的数据库的名称,本文为
Study
数据库。由于
sa
用户是
SQL Server
中的保留用户,可以访问所有的数据库,因此,在实际开发的过程中,不应该使用
sa
作为登录用户,本文只是做一个演示。关于
SQL Server
用户即权限的设置笔者将另文介绍。
6.
在
Struts
应用中,在
Action
中使用如下的代码段访问数据库并发送
SQL
语句。本文只是演示,项目中应用的访问数据库的代码应该复杂的多
ServletContext context=servlet.getServletContext();
DataSource dataSource =(DataSource)context.getAttribute("StrutsDB");
String strSql = "insert into users values ('aa','bb')";
try{
connect = dataSource.getConnection();
Statement stmt = connect.createStatement();
stmt.execute(strSql);
}
catch(SQLException ex){
ex.printStackTrace();
}
finally{
if(connect!=null)
connect.close();
}
return true;
7.
重新部署应用,并重启
Tomcat
容器,使数据库配置生效。此时使用此应用并执行相应的操作,应该可以访问数据库。