連接池 ----單例模式


//數據庫連接池  單例模式  

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();
            }
        }


    }

}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM