DBCP 数据连接池的配置和使用

DBCP 数据连接池的配置和使用

标签: 数据库连接池properties数据库stringnulldatabase
15947人阅读 评论(2) 收藏 举报
本文章已收录于:
分类:

DBCP(DataBase connection pool),数据库连接池。是 apache 上的一个 Java 连接池项目,也是 tomcat 使用的连接池组件。

单独使用dbcp需要3个包:common-dbcp.jar,common-pool.jar,common-collections.jar

由于建立数据库连接是一个非常耗时耗资源的行为,所以通过连接池预先同数据库建立一些连接,放在内存中,应用程序需要建立数据库连接时直接到连接池中申请一个就行,用

完后再放回去。


获取数据库连接的类:DbcpConnection.java

  1. import java.io.FileInputStream;  
  2. import java.io.FileNotFoundException;  
  3. import java.io.IOException;  
  4. import java.sql.Connection;  
  5. import java.sql.SQLException;  
  6. import java.util.Properties;  
  7.   
  8. import javax.sql.DataSource;  
  9. import org.apache.commons.dbcp.BasicDataSource;  
  10. public class DbcpConnection {  
  11.     private static DataSource dataSource;  
  12.     private static Connection connection;  
  13.       
  14.     public static void initDataSource(){  
  15.         FileInputStream is = null;  
  16.         Properties properties = new Properties();  
  17.           
  18.         String driverClassName = null;  
  19.         String url = null;  
  20.         String username = null;  
  21.         String password = null;  
  22.           
  23.         int initialSize = 0;  
  24.         int minIdle = 0;  
  25.         int maxIdle = 0;  
  26.         int maxWait = 0;  
  27.         int maxActive = 0;  
  28.           
  29.         try {  
  30.             String path = System.getProperty("user.dir")+"\\src\\com\\xiami\\db\\connection\\";  
  31.             is = new FileInputStream(path+"dbcp.properties");  
  32.             properties.load(is);  
  33.               
  34.             driverClassName = properties.getProperty("dbcp.driverClassName");  
  35.             url = properties.getProperty("dbcp.url");  
  36.             username = properties.getProperty("dbcp.username");  
  37.             password = properties.getProperty("dbcp.password");  
  38.             initialSize = Integer.parseInt((properties.getProperty("dbcp.initialSize").trim()));  
  39.             minIdle = Integer.parseInt((properties.getProperty("dbcp.minIdle")).trim());  
  40.             maxIdle = Integer.parseInt((properties.getProperty("dbcp.maxIdle")).trim());  
  41.             maxWait = Integer.parseInt((properties.getProperty("dbcp.maxWait")).trim());  
  42.             maxActive = Integer.parseInt((properties.getProperty("dbcp.maxActive")).trim());  
  43.               
  44.         } catch (FileNotFoundException e) {  
  45.             e.printStackTrace();  
  46.         } catch (IOException ioe){  
  47.             ioe.printStackTrace();  
  48.         }finally{  
  49.             try {  
  50.                 is.close();  
  51.             } catch (IOException e) {  
  52.                 // TODO Auto-generated catch block  
  53.                 e.printStackTrace();  
  54.             }  
  55.         }  
  56.         BasicDataSource bds = new BasicDataSource();  
  57.           
  58.         bds.setUrl(url);  
  59.         bds.setDriverClassName(driverClassName);  
  60.         bds.setUsername(username);  
  61.         bds.setPassword(password);  
  62.         bds.setInitialSize(initialSize);  
  63.         bds.setMaxActive(maxActive);  
  64.         bds.setMinIdle(minIdle);  
  65.         bds.setMaxIdle(maxIdle);  
  66.         bds.setMaxWait(maxWait);  
  67.           
  68.         dataSource = bds;  
  69.     }  
  70.       
  71.     public static Connection  getConnection() throws  SQLException {  
  72.         if (dataSource == null) {     
  73.             initDataSource();     
  74.         }     
  75.         Connection conn = null;     
  76.         if (dataSource != null) {     
  77.             conn = dataSource.getConnection();     
  78.         }     
  79.         return conn;     
  80.     }  
  81. }  
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
public class DbcpConnection {
	private static DataSource dataSource;
	private static Connection connection;
	
	public static void initDataSource(){
		FileInputStream is = null;
		Properties properties = new Properties();
		
		String driverClassName = null;
		String url = null;
		String username = null;
		String password = null;
		
		int initialSize = 0;
		int minIdle = 0;
		int maxIdle = 0;
		int maxWait = 0;
		int maxActive = 0;
		
		try {
			String path = System.getProperty("user.dir")+"\\src\\com\\xiami\\db\\connection\\";
			is = new FileInputStream(path+"dbcp.properties");
			properties.load(is);
			
			driverClassName = properties.getProperty("dbcp.driverClassName");
			url = properties.getProperty("dbcp.url");
			username = properties.getProperty("dbcp.username");
			password = properties.getProperty("dbcp.password");
			initialSize = Integer.parseInt((properties.getProperty("dbcp.initialSize").trim()));
			minIdle = Integer.parseInt((properties.getProperty("dbcp.minIdle")).trim());
			maxIdle = Integer.parseInt((properties.getProperty("dbcp.maxIdle")).trim());
			maxWait = Integer.parseInt((properties.getProperty("dbcp.maxWait")).trim());
			maxActive = Integer.parseInt((properties.getProperty("dbcp.maxActive")).trim());
			
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException ioe){
			ioe.printStackTrace();
		}finally{
			try {
				is.close();
			} catch (IOException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		BasicDataSource bds = new BasicDataSource();
		
		bds.setUrl(url);
		bds.setDriverClassName(driverClassName);
		bds.setUsername(username);
		bds.setPassword(password);
		bds.setInitialSize(initialSize);
		bds.setMaxActive(maxActive);
		bds.setMinIdle(minIdle);
		bds.setMaxIdle(maxIdle);
		bds.setMaxWait(maxWait);
		
		dataSource = bds;
	}
	
	public static Connection  getConnection() throws  SQLException {
        if (dataSource == null) {   
        	initDataSource();   
        }   
        Connection conn = null;   
        if (dataSource != null) {   
            conn = dataSource.getConnection();   
        }   
        return conn;   
	}
}


连接数据库信息的配置文件:dbcp.properties

  1. dbcp.driverClassName=com.ibm.db2.jcc.DB2Driver  
  2. dbcp.url=jdbc\:db2\://192.168.3.11\:50000/DBNAME  
  3. dbcp.username=db2admin  
  4. dbcp.password=password  
  5. dbcp.initialSize=30    
  6. dbcp.minIdle=10   
  7. dbcp.maxIdle=10    
  8. dbcp.maxWait=1000   
  9. dbcp.maxActive=30   
dbcp.driverClassName=com.ibm.db2.jcc.DB2Driver
dbcp.url=jdbc\:db2\://192.168.3.11\:50000/DBNAME
dbcp.username=db2admin
dbcp.password=password
dbcp.initialSize=30  
dbcp.minIdle=10 
dbcp.maxIdle=10  
dbcp.maxWait=1000 
dbcp.maxActive=30 


在Service层使用的时候:ZhiDianJieDu.java (业务逻辑处理的类)

  1. import java.sql.Connection;  
  2. import java.sql.PreparedStatement;  
  3. import java.sql.ResultSet;  
  4. import java.sql.SQLException;  
  5.   
  6. import com.xiami.db.connection.DbcpConnection;  
  7.   
  8. public class ZhiDianJieDu {  
  9.     DbcpConnection dbcpcon = new DbcpConnection();  
  10.     Connection conn = null;  
  11.     PreparedStatement pst = null;  
  12.     ResultSet rs = null;  
  13.     String ZLJGBM = null;  
  14.       
  15.       
  16.     //通过A机构编码获得B机构代码  
  17.     public void getZLJGBMFromDRJGBM(String DRJGBM){  
  18.         String sql = "select ZLJGBM from T_CONTRAST_ZL_TO_NEUSOFT where DRJGBM = '"+DRJGBM+"'";  
  19.         try {  
  20.             conn = dbcpcon.getConnection();  
  21.             pst = conn.prepareStatement(sql);  
  22.             rs = pst.executeQuery();  
  23.             while(rs.next()){  
  24.                 ZLJGBM = rs.getString("ZLJGBM");  
  25.             }  
  26.             System.out.println(ZLJGBM);  
  27.               
  28.         } catch (SQLException e) {  
  29.             // TODO Auto-generated catch block  
  30.             e.printStackTrace();  
  31.         }  
  32.     }  
  33. }  
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import com.xiami.db.connection.DbcpConnection;

public class ZhiDianJieDu {
	DbcpConnection dbcpcon = new DbcpConnection();
	Connection conn = null;
	PreparedStatement pst = null;
	ResultSet rs = null;
	String ZLJGBM = null;
	
	
	//通过A机构编码获得B机构代码
	public void getZLJGBMFromDRJGBM(String DRJGBM){
		String sql = "select ZLJGBM from T_CONTRAST_ZL_TO_NEUSOFT where DRJGBM = '"+DRJGBM+"'";
		try {
			conn = dbcpcon.getConnection();
			pst = conn.prepareStatement(sql);
			rs = pst.executeQuery();
			while(rs.next()){
				ZLJGBM = rs.getString("ZLJGBM");
			}
			System.out.println(ZLJGBM);
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}




2
4
 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值