在Struts-config.xml中定义。
1、连接SQL Server 2000
<data-sources>
<data-source key="sqlserver" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="com.microsoft.jdbc.sqlserver.SQLServerDriver" />
<set-property property="url"
value="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=gzrs;SelectMethod=cursor" />
<set-property property="username" value="gzrs" />
<set-property property="password" value="gzrs" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000" />
<set-property property="description" value="sql server 2000"/>
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
</data-source>
需把从微软网站下载的SQL Server驱动中的三个驱动包:msbase.jar, msutil.jar, mssqlserver.jar放到tomcat目录中的common/lib中。
分析:(1)driverClassName代表驱动类,SQL Server 2000的就是com.microsoft.jdbc.sqlserver.SQLServerDriver
(2)url代表数据库链接,SQL Server 2000的就是jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=gzrs;SelectMethod=cursor
其中127.0.0.1:1433;DatabaseName=gzrs表示链接的是本地SQL Server2000数据库,数据库名为gzrs,可根据条件修改。
其它根据意思可知。
2、连接MySql数据库
<data-sources>
<data-source key="mysql" type="org.apache.commons.dbcp.BasicDataSource">
<set-property property="driverClassName"
value="org.gjt.mm.mysql.Driver" />
<set-property property="url"
value="jdbc:mysql://localhost/gzrs" />
<set-property property="username" value="gzrs" />
<set-property property="password" value="gzrs" />
<set-property property="maxActive" value="10" />
<set-property property="maxWait" value="5000" />
<set-property property="description" value="mysql"/>
<set-property property="defaultAutoCommit" value="false" />
<set-property property="defaultReadOnly" value="false" />
</data-source>
需从MySql的网站上下载MySql的驱动,把mysql-connector-java-3.2.0-alpha-bin.jar驱动包放到tomcat目录中的common/lib目录下。
与SQL Server相比,驱动类不同。url中localhost/Struts表示链接本地MySql数据库,数据库名为struts.可修改。
在Struts-confog.xml中配置好数据DataSource后,可在应用系统中使用这些数据源。
如在Action类的execute方法中通过这些数据源来生成数据库连接。
public class FunctionsAction extends Action {
public ActionForward execute(
ActionMapping actionMapping,
ActionForm actionForm,
HttpServletRequest httpServletRequest,
HttpServletResponse httpServletResponse)
{
DataSource dataSource=null;
Connection cnn=null;
ActionErrors errors=new ActionErrors();
try{
dataSource = getDataSource(httpServletRequest,"sqlserver");
cnn = dataSource.getConnection();
//数据库已经链接,可以在此写语句使用数据库
}
catch(Throwable e){
e.printStackTrace();
//throw new RuntimeException("未能与数据库连接");
ActionError error=new ActionError(e.getMessage());
errors.add(ActionErrors.GLOBAL_ERROR,error);
}
finally{
try{
if(cnn!=null)
cnn.close();
}
catch(SQLException e){
throw new RuntimeException(e.getMessage());
}
}
saveErrors(httpServletRequest,errors);
return actionMapping.findForward("fail");
}
}
注: 若一个Struts系统中有多个数据源时,可在配置文件的<data-source>元素里包含一个key属性。可代码里可用key来获得不同的数据源。如上面的黄色部分。