Resin之数据库连接的方法
Resin之数据库连接的方法
前言:在web编程中,数据库连接一直是比较头疼的问题,数据库连接的好坏直接影响到整个网站访问速度的快慢。
目前,在网站建设当中,使用jsp/java servlet/java bean作为动态页面编程已经越来越得到大家的认可。作为免费的web服务器Resin成为中小型站点搭建的选择之一。我选择的是免费数据库mysql。
Resin现在的版本为3.x,它自己本身提供了连接池,配置如下:
resin.conf
<resin>
……
<database>
<jndi-name>jdbc/mysql</jndi-name> //jndi-name
<driver type="org.gjt.mm.mysql.Driver"> //mysql驱动driver
<url>jdbc:mysql://localhost:3306/test</url> //url
<user>root</user> //数据库连接用户名
<password></password> // 密码
</driver>
<prepared-statement-cache-size>8</prepared-statement-cache-size>
<max-connections>20</max-connections> //最大连接数为20
<max-idle-time>30s</max-idle-time>
</database>
……
</resin>
配置好resin.conf,重新启动resin服务器。下面我们就可以编写代码连接数据库了。
用java bean编写代码:
package com.ewe.mysql;
import java.sql.Connection;
import java.sql.Statement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.sql.DataSource;
import javax.naming.Context;
import javax.naming.InitialContext;**
* Title: DBConnection.class
* Description: connection mysql
* Copyright: Copyright (c) 2004
* Company: www.ewe.com.cn
* @author bluesunny <hyjun2001@163.com>
*/public class DBConnection {
private Connection con = null;
private Statement stmt = null;
private ResultSet rs = null;
private int resultNum=0;/**
* 构造函数
* 找到数据源,并用这个数据源创建连接
*/
public DBConnection() {
try {
Context initCtx = new InitialContext();
Context envCtx = (Context) initCtx.lookup("java:comp/env");
DataSource ds = (DataSource)envCtx.lookup("jdbc/mysql");
con = ds.getConnection();
} catch (Exception ex) {
throw new Exception("Couldn't open connection to database: " + ex.getMessage());
}}
/**
* 执行SQL语句:查询记录
* @param sql SQL语句
* @return ResultSet 记录集
*/
public ResultSet executeQuery(String sql) {
rs = null;
try {
if(con==null) con = ds.getConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
} catch(SQLException se) {
System.out.println("Query error:" + se.getMessage());
}
return rs;
}/**
* 执行SQL语句 :插入与更新记录
* @param sql SQL语句
* @return int resultNum 更新的记录数
*/
publicboolean executeUpdate(String sql) {
resultNum=0;
try {
if(con==null) con = getConnection();
stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
this.resultNum = stmt.executeUpdate(sql);
return true;} catch (SQLException se) {
System.err.println("Update error:" + se.getMessage());
return false;
}}
/**
* 关闭连接
*/
public void close() {
try {
if (rs != null) {
rs.close();
rs = null;
}
if (stmt != null) {
stmt.close();
stmt = null;
}
if (con != null) {
con.close();
con = null;
}
} catch (SQLException se) {
System.out.println("close error: " + se.getMessage());
}
}
}
好了,到这里,大功算是告成了,下面我们可以写一个jsp页面来测试它,在jsp页面调用这个java bean类,具体的代码略过。
注意:1 . 记得及时关闭数据库连接 2 . 这样的数据库连接可以做为中小型网站之用,对于大型网站不适合。