Resin:数据库连接

来源:互联网 发布:昆明餐饮软件 编辑:程序博客网 时间:2024/04/30 02:20

前言:在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 更新的记录数
     */
    public boolean 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 . 这样的数据库连接可以做为中小型网站 之用,对于大型网站不适合。