DBCP连接池

来源:互联网 发布:php商城开发教程 编辑:程序博客网 时间:2024/05/16 19:21

dbcp连接池

需要的架包
1.commons-dbcp.jar
2.commons-pool.jar
3.mysql-connector-java-5.0.8-bin.jar

DBCP相关配置:DBCP configuration
说明:
defaultAutoCommit: 对于事务是否 autoCommit, 默认值为 true
defaultReadOnly: 对于数据库是否只能读取, 默认值为 false
driverClassName:连接数据库所用的 JDBC Driver Class,
maxActive: 连接池的最大数据库连接数。设为0表示无限制,默认为8
maxIdle: 最大等待连接中的数量,设 0 为没有限制 (对象池中对象最大个数)
minIdle:对象池中对象最小个数
maxWait: 最大等待秒数, 单位为 ms, 超过时间会丟出错误信息
password: 登陆数据库所用的密码
url: 连接数据库的 URL
username: 登陆数据库所用的帐号
validationQuery: 验证连接是否成功,该选项用来验证数据库连接的有效性, SQL SELECT 指令至少要返回一行
removeAbandoned: 是否自我中断, 默认是 false
removeAbandonedTimeout: 几秒后会自我中断, removeAbandoned 必须为 true
logAbandoned: 是否记录中断事件, 默认为 false
minEvictableIdleTimeMillis:大于0 ,进行连接空闲时间判断,或为0,对空闲的连接不进行验证;默认30分钟
timeBetweenEvictionRunsMillis:失效检查线程运行时间间隔,如果小于等于0,不会启动检查线程,默认-1
testOnBorrow:取得对象时是否进行验证,检查对象是否有效,默认为false
testOnReturn:返回对象时是否进行验证,检查对象是否有效,默认为false
testWhileIdle:空闲时是否进行验证,检查对象是否有效,默认为false
initialSize:初始化线程数


一。通过直接配置数据库属性连接
[java] view plain copy
 print?
  1. import java.sql.Connection;  
  2. import java.sql.PreparedStatement;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8.   
  9. import org.apache.commons.dbcp.BasicDataSource;  
  10. import org.apache.commons.dbcp.DataSourceConnectionFactory;  
  11. class dbcputils {  
  12.     private static dbcputils dbcp=null;  
  13.     private BasicDataSource dbs=null;  
  14.     private DataSourceConnectionFactory dscf=null;  
  15.     public dbcputils(){  
  16.         if(dbs==null){  
  17.             dbs=new BasicDataSource();  
  18.             dbs.setUsername("root");  
  19.             dbs.setPassword("jarrem");  
  20.             dbs.setUrl("jdbc:mysql://127.0.0.1:3306/tang");  
  21.             dbs.setDriverClassName("com.mysql.jdbc.Driver");  
  22.             dbs.setMaxActive(11);  
  23.             dbs.setInitialSize(10);  
  24.             dbs.setMaxIdle(5);  
  25.             dbs.setMinIdle(3);  
  26.             dscf=new DataSourceConnectionFactory(dbs);  
  27.             System.out.println("初始化实例了");  
  28.         }  
  29.     }  
  30.     public dbcputils getInstance(){  
  31.         if(dbcp==null){    
  32.             dbcp=new dbcputils();    
  33.             System.out.println("getInstance初始化实例了");  
  34.             }  
  35.         return dbcp;  
  36.     }  
  37.     public Connection getConnection(){  
  38.         Connection connection=null;  
  39.                 try {  
  40.                 connection = dscf.createConnection();  
  41.                 } catch (SQLException e) {  
  42.                     // TODO Auto-generated catch block  
  43.                     System.out.println("获取Connection失败!");  
  44.                     e.printStackTrace();  
  45.                 }  
  46.         return connection;  
  47.         }  
  48.     public static void main(String[] args){  
  49.      dbcputils dp=new dbcputils();  
  50.      long begin=System.currentTimeMillis();  
  51.                 List list=new ArrayList();  
  52.                 Connection connection = dp.getInstance().getConnection();  
  53.                 try {  
  54.                     PreparedStatement ps = connection.prepareStatement("select * from user;");  
  55.                     ResultSet result = ps.executeQuery();  
  56.                     while(result.next()){  
  57.                         list.add(result);  
  58.                         System.out.println(result.getString(1));  
  59.                     }  
  60.                     for(Object o:list){  
  61.                         System.out.println(list.toString());  
  62.                     }  
  63.                     connection.close();  
  64.                 } catch (SQLException e1) {  
  65.                     e1.printStackTrace();  
  66.                 }  
  67.        
  68.     long end=System.currentTimeMillis();  
  69.     System.out.println(end-begin);  
  70.     }  
  71. }  


二.通过properties文件配置数据库
[java] view plain copy
 print?
  1. import java.io.FileInputStream;  
  2. import java.sql.Connection;  
  3. import java.sql.PreparedStatement;  
  4. import java.sql.ResultSet;  
  5. import java.sql.SQLException;  
  6. import java.util.Properties;  
  7. import javax.sql.DataSource;  
  8. import org.apache.commons.dbcp.BasicDataSource;  
  9. import org.apache.commons.dbcp.BasicDataSourceFactory;  
  10. import org.apache.commons.dbcp.DataSourceConnectionFactory;  
  11. public class dbcpPool {  
  12.     private BasicDataSource bds=null;  
  13.     private DataSourceConnectionFactory dscf=null;  
  14.     private Properties properties=null;  
  15.     private DataSource DataSource=null;  
  16.     private static Connection connection=null;  
  17.     public dbcpPool(){  
  18.         if(bds==null){  
  19.             bds=new BasicDataSource();  
  20.             properties=new Properties();  
  21.             FileInputStream in;  
  22.             try {  
  23.                 //我这里使用的是绝对路径,根据自己文件位置修改  
  24.                 in = new FileInputStream("C:\\Users\\lenovo\\Workspaces\\MyEclipse Professional 2014\\DatabaseConnectionPool\\src\\com\\tang\\dbpcPool2\\link.properties");  
  25.                 properties.load(in);  
  26.                     DataSource = BasicDataSourceFactory.createDataSource(properties);  
  27.                     connection = DataSource.getConnection();  
  28.             } catch (Exception e) {  
  29.                 e.printStackTrace();  
  30.             }  
  31.               
  32.         }  
  33.     }  
  34.     public static void main(String args[]){  
  35.         try {  
  36.             new dbcpPool();  
  37.             PreparedStatement statement = connection.prepareStatement("select * from user;");  
  38.             ResultSet result = statement.executeQuery();  
  39.             while(result.next()){  
  40.                 System.out.println(result.getString(1)+"    "+result.getString(2));  
  41.             }  
  42.         } catch (SQLException e) {  
  43.             e.printStackTrace();  
  44.         }  
  45.     }  
  46. }  
原创粉丝点击