美文网首页
数据库连接池

数据库连接池

作者: 强壮de西兰花 | 来源:发表于2017-04-08 17:29 被阅读9次

    数据库连接池负责分配、管理和释放数据库连接,允许程序重复使用一个现有的数据库连接,而不是重复新建立一个。
    ![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);
            }
        }
    }
    
    

    相关文章

      网友评论

          本文标题:数据库连接池

          本文链接:https://www.haomeiwen.com/subject/oralattx.html