dbcp连接池实现

DBCP依赖Apache的另外2个开源项目
commons.collections.jar和commons.pool.jar
下载这些包并将这些包的路径添加到classpath中就可以使用dbcp做为项目中的数据库连接池使用了。
以下是连接池代码:
 
package  selfservice;

import  java.io.FileNotFoundException; 
import  java.io.IOException; 
import  java.sql.Connection; 
import  java.sql.DriverManager; 
import  java.sql.ResultSet; 
import  java.sql.SQLException; 
import  java.sql.Statement; 
import  org.apache.commons.dbcp.ConnectionFactory; 
import  org.apache.commons.dbcp.DriverManagerConnectionFactory; 
import  org.apache.commons.dbcp.PoolableConnectionFactory; 
import  org.apache.commons.dbcp.PoolingDriver; 
import  org.apache.commons.pool.ObjectPool; 
import  org.apache.commons.pool.impl.GenericObjectPool; 
   
public   class  PoolManager 
    
private static String 
            driver
="oracle.jdbc.driver.OracleDriver",//驱动 
            url = "jdbc:oracle:thin:@192.168.0.40:1521:drcom",//URL 
            Name="drcom",//用户名 
            Password="drcom";//密码 
  
    
private static Class driverClass = null
    
private static ObjectPool connectionPool = null
  
    
public PoolManager()
    }
 
    
private static void loadProperties()
        
try 
            java.io.InputStream stream 
= new java.io.FileInputStream ("config.properties"); 
            java.util.Properties props 
= new java.util.Properties(); 
            props.load(stream); 
  
            driver 
= props.getProperty("ORACLE_DRIVER"); 
            url 
= props.getProperty("ORACLE_URL"); 
            Name 
= props.getProperty("ORACLE_LOGIN_NAME"); 
            Password 
= props.getProperty("ORACLE_LOGIN_PASSWORD"); 
        }
 catch (FileNotFoundException e) 
            System.out.println(
"读取配置文件异常"); 
        }
 catch(IOException ie)
            System.out.println(
"读取配置文件时IO异常"); 
        }
 
    }
 
    
    
private static synchronized void initDataSource() 
        
if (driverClass == null
            
try 
                driverClass 
= Class.forName(driver); 
            }
 catch (ClassNotFoundException e) 
                e.printStackTrace(); 
            }
 
        }
 
    }
 
   
    
public static void StartPool() 
        loadProperties(); 
        initDataSource(); 
        
if (connectionPool != null
            ShutdownPool(); 
        }
 
        
try 
            connectionPool 
= new GenericObjectPool(null); 
            ConnectionFactory connectionFactory 
= new 
                      DriverManagerConnectionFactory(url, Name, Password); 
            PoolableConnectionFactory poolableConnectionFactory 
= new 
                     PoolableConnectionFactory(connectionFactory, connectionPool, 
nullnull
                     
falsetrue); 
            Class.forName(
"org.apache.commons.dbcp.PoolingDriver"); 
            PoolingDriver driver 
= (PoolingDriver) DriverManager.getDriver 
                     (
"jdbc:apache:commons:dbcp:"); 
            driver.registerPool(
"dbpool", connectionPool); 
            System.out.println(
"装配连接池OK"); 
        }
 catch (Exception e) 
            e.printStackTrace(); 
        }
 
    }
 
   
    
public static void ShutdownPool() 
        
try 
            PoolingDriver driver 
= (PoolingDriver) DriverManager.getDrive 
                     (
"jdbc:apache:commons:dbcp:"); 
            driver.closePool(
"dbpool"); 
        }
 catch (SQLException e) 
            e.printStackTrace(); 
        }
 
    }
 
    
    
public static Connection getConnection() 
        Connection conn 
= null
        
if(connectionPool == null
            StartPool(); 
        
try 
            conn 
= DriverManager.getConnection ("jdbc:apache:commons:dbcp:dbpool"); 
        }
 catch (SQLException e) 
            e.printStackTrace(); 
        }
 
        
return conn; 
    }
 
  
    
public static Connection getConnection(String name)
        
return getConnection(); 
    }
 
    
    
public static void freeConnection(Connection conn)
        
if(conn != null)
            
try 
                conn.close(); 
            }
 catch (SQLException e) 
                e.printStackTrace(); 
            }
 
        }
 
    }
 
    
public static void freeConnection (String name,Connection con)
                freeConnection(con); 
    }
  
    
public static void main(String[] args) 
        
try 
            Connection conn 
= PoolManager.getConnection(); 
            
if(conn != null)
                Statement statement 
= conn.createStatement(); 
                ResultSet rs 
= statement.executeQuery("select * from 
                     
tblgxinterface"); 
                int c = rs.getMetaData().getColumnCount(); 
                
while(rs.next())
                    System.out.println(); 
                    
for(int i=1;i<=c;i++)
                        System.out.print(rs.getObject(i)); 
                    }
 
                }
 
                rs.close(); 
            }
 
            PoolManager.freeConnection(conn); 
        }
 catch (SQLException e) 
            e.printStackTrace(); 
        }
 
    }
 
}
 
以上创建一个连接池,并从连接池中得到连接,连接池会管理每个连接,以上测试通过。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值