RESIN连接池+数据库BEAN

来源:互联网 发布:环比和同比的算法 编辑:程序博客网 时间:2024/05/16 09:42

作者:matrix原创 作者:fajaven 发文时间:2003.07.30 10:51:48

JSP初学者一用到数据库都会遇到数据库连接BEAN的问题。

并且对初学者也推荐用RESIN做服务器,配置简单(开发不需要配置APACHE)。

所以把我自己在用的数据库连接BEAN发出来来,供参考。

由于RESI本身也提供了连接池,就更省事了,访问量不大时都够了。  

===================

/*****************************
 * 数据库连接 bean ,用来连接 resin 的连接池
 *****************************/
package net.asales.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;

public class DBConnection {
    private Connection conn = null;
    private Statement stmt = null;
    private ResultSet rs = null;
    private int resultNum = 0;

    /**
     * 构造函数
     * 找到数据源,并用这个数据源创建连接
     */
    public DBConnection() {
        try {
            Context env = new InitialContext();
            DataSource pool = (DataSource) env.lookup
        ("java:comp/env/jdbc/asales");
            if (pool == null)
               throw new Exception("jdbc/asales is
         an unknown DataSource");
            conn = pool.getConnection();
            stmt = conn.createStatement();
        } catch (Exception e) {
            System.out.println("naming:" + e.getMessage());
        }
    }

    /**
     * 执行SQL语句:查询记录
     * @param sql SQL语句
     * @return ResultSet 记录集
     */
    public ResultSet executeQuery(String sql) {
        rs = null;
        try {
            rs = stmt.executeQuery(sql);
        } catch(SQLException se) {
            System.out.println("Query error:" + se.getMessage());
        }
        return rs;
    }

    /**
     * 执行SQL语句 :插入与更新记录
     * @param sql SQL语句
     * @return int resultNum 更新的记录数
     */
    public int executeUpdate(String sql) {
        resultNum=0;
        try {
            resultNum = stmt.executeUpdate(sql);
        } catch (SQLException se) {
            System.err.println("Update error:" + se.getMessage());
        }
        return resultNum;
    }

    /**
     * 关闭连接
     */
    public void close() {
        try {
            if (rs != null) {
                rs.close();
                rs = null;
            }
            if (stmt != null) {
               stmt.close();
               stmt = null;
            }
            if (conn != null) {
                conn.close();
                conn = null;
            }
        } catch (SQLException se) {
            System.out.println("close error: " + se.getMessage());
        }
    }
}
 


===================

以下是RESIN配置文件中关于数据源的配置例:

<resource-ref>
  <res-ref-name>jdbc/asales</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <init-param driver-name="org.gjt.mm.mysql.Driver"/>
  <init-param url="jdbc:mysql://localhost:3306/asales"/>
  <init-param user="root"/>
  <init-param password=""/>
  <init-param max-connections="20"/>
  <init-param max-idle-time="30"/>
</resource-ref>
 
欢迎大家指正与优化。谢谢!!