连接池 ----单例模式

//数据库连接池  单例模式  

import java.sql.Connection;  

import java.sql.SQLException;  

import com.mchange.v2.c3p0.ComboPooledDataSource;  

import com.mchange.v2.c3p0.DataSources;  

public class ComboPooledDataSourceDemo 
{
        private static ComboPooledDataSourceDemo instance;  

        private ComboPooledDataSource ds;  

        private ComboPooledDataSourceDemo() throws Exception
        {  
            ds = new ComboPooledDataSource();  

            ds.setDriverClass("oracle.jdbc.driver.OracleDriver");  //驱动

            ds.setJdbcUrl("jdbc:oracle:thin:@localhost:1521:orcl");  //地址

            ds.setUser("test0816");  //数据库用户名

            ds.setPassword("934617699");  //数据库用户密码

            //初始化时获取三个连接,取值应在minPoolSize与maxPoolSize之间。Default: 5 initialPoolSize  

            ds.setInitialPoolSize(5);  

            //连接池中保留的最大连接数。Default:  20 maxPoolSize  

            ds.setMaxPoolSize(20);  

            //// 连接池中保留的最小连接数。  

            //ds.setMinPoolSize(1);  

            //当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 5 acquireIncrement    

            ds.setAcquireIncrement(10);  
     //用来返回该对象
        public  static  final ComboPooledDataSourceDemo getInstance() {  

            if (instance == null) {  

                try {  

                    instance = new ComboPooledDataSourceDemo();  

                } catch (Exception e) {  

                    e.printStackTrace();  

                }  

            }  

            return instance;  

        }  

      
            //返回一个连接
        public synchronized   final Connection getConnection() {  

            try {  

                return ds.getConnection();  

            } catch (SQLException e) {  

                e.printStackTrace();  

            }  

            return null;  

        }  
}
package com.phone.shuyinghengxie;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

import org.junit.Test;

public class ComboPooledDataSourceDemoTest1 {

    public static void main(String[] args)
    {
        ComboPooledDataSourceDemo  cp = ComboPooledDataSourceDemo.getInstance() ;
        
        
            List<Person> list = new ArrayList<>() ;
            
            
            
            cp.getConnection() ;
            
            String sql = "select * from person " ;
            
            try {
                PreparedStatement  pt = cp.getConnection().prepareStatement(sql) ;
                
                ResultSet rt = pt.executeQuery() ;
                
                while(rt.next())
                {
                    Person p = new Person();
                    
                    p.setName(rt.getString("name"));
                    p.setAge(rt.getString("age"));
                    p.setSex(rt.getString("sex"));
                    p.setTelNum(rt.getString("telNum"));
                    p.setAddress(rt.getString("address"));
                    
                    list.add(p) ;
                            
                }
                
                for(Person p : list)
                {
                    System.out.println(p);
                }
                
                System.out.println("哈哈");
            } catch (SQLException e) {
                // TODO 自动生成的 catch 块
                e.printStackTrace();
            }
        }


    }

}
原文地址:https://www.cnblogs.com/20gg-com/p/5997837.html