数据库连接池

数据库连接池负责分配、管理和释放数据库连接,允许程序重复使用一个现有的数据库连接,而不是重复新建立一个。
![Uploading 连接池_413693.png . . .]
建立连接池就是在原来创建jdbc的基础上,把原先获得的Connection接口对象保存到一个list数组中。避免重复连接。

自定义连接池:

package com.whd.utils;

import java.util.*;
import java.sql.*;
/**
 * @author Administrator
 *自定义连接池
 */
public class MyDbPool {
    private static String path,url,name,pass;
    //存储当前的连接对象
    private static List<Connection> list;
    
    static {
        ResourceBundle rs = ResourceBundle.getBundle("dbinfo");
        path = rs.getString("driverpath");
        url = rs.getString("dburl");
        name = rs.getString("username");
        pass = rs.getString("pass");
        //list = new ArrayList<Connection>();
        list = Collections.synchronizedList(new ArrayList<>());
        try {
            //加载驱动
            Class.forName(path);
            //创建5个连接对象
            for(int i = 0;i < 5;i++){
                list.add(DriverManager.getConnection(url,name,pass));
            }
            
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    
    /**获取连接对象
     * @return
     */
    public static Connection getConn(){
        if(list.size()>0){
            return list.remove(0);
        }else{
            throw new RuntimeException("请先关闭连接对象!");
        }
    }
    //销毁连接对象,其实就是再次添加进来
    public static void destory(Connection conn){
        list.add(list.size(), conn);
    }
    
}

自定义jdbc工具类:

package com.whd.utils;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;


/**
 * @author Administrator
 *封装数据库工具类
 */
public class MyDbutils {
    //连接对象
    private static Connection conn;
    //获取操作sql的语句
    private static Statement stmt;
    
    static {
        conn = MyDbPool.getConn();
        try {
            stmt = conn.createStatement();
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public static void execute(String sql){
        try {
            stmt.execute(sql);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    //必须要关闭
    public static void close(){
        if(stmt != null){
            try {
                stmt.close();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            MyDbPool.destory(conn);
        }
    }
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容