zoukankan      html  css  js  c++  java
  • 连接池 ----单例模式

    //数据库连接池  单例模式  
    
    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();
                }
            }
    
    
        }
    
    }
  • 相关阅读:
    记录一下最近面试的总结
    网络模块相关面试题
    JVM 之类加载器
    一段简单的关于字符串的 Java 代码竟考察了这么多东西
    LeetCode 链表题 ( Java )
    MD5 加盐加密
    SpringMVC 学习笔记
    [redis]dict和rehash
    [redis]SDS和链表
    [go]包和工程管理
  • 原文地址:https://www.cnblogs.com/20gg-com/p/5997837.html
Copyright © 2011-2022 走看看