java Servlet使用c3p0创建多个Mysql数据库连接池,Sevlet使用c3p0创建oracle数据库连接池

由于之前的servlet操作数据库的时候造成了数据库连接的等待问题,所以考虑使用使用数据库连接池的使用,因为项目中涉及mysql和oracle的数据同步问题,所以也将oracle的连接次配置给出:

1、数据库连接配置:

public static final String DBDRIVER               = "com.mysql.jdbc.Driver";

public static final String DBURL_A                = "jdbc:mysql://Mysql地址一:3306/数据库";  
public static final String DBUSER_A               = "用户名";  
public static final String DBPASSWORLD_A          = "密码";  
  
public static final String DBURL_B                = "jdbc:mysql://Mysql地址二:3306/数据库";  
public static final String DBUSER_B               = "用户名";  
public static final String DBPASSWORLD_B          = "密码";  

public static final String ODBDRIVER              = "oracle.jdbc.driver.OracleDriver";

public static final String DBURL_C                = "jdbc:oracle:thin:@Oracle地址:3306:数据库";  
public static final String DBUSER_C               = "用户名";  
public static final String DBPASSWORLD_C          = "密码"; 

2、多个Mysql数据库连接池:

package mysql;

import java.sql.Connection;
import java.sql.SQLException;


import com.mchange.v2.c3p0.ComboPooledDataSource;

//引入站点的配置信息
import config.Config;

/**
 * 数据库连接生成类,返回一个数据库连接对象
 * 构造函数完成c3p0的配置,根据不一样的构造生成不一样的连接池对象
 * 
 * @author yuyu
 *
 */

public class DbConnect {
	
private static ComboPooledDataSource dataSourceJLP=null;
private static ComboPooledDataSource dataSourceMDB=null;

private String db;


	/**
	 * 构造函数完成数据库的连接和连接对象的生成
	 */
	public DbConnect() {
		try{
			if(dataSourceJLP==null){
								
				dataSourceJLP=new ComboPooledDataSource();
				
		        //设置连接参数
				dataSourceJLP.setJdbcUrl(Config.DBURL_A);
				dataSourceJLP.setDriverClass(Config.DBDRIVER);
				dataSourceJLP.setUser(Config.DBUSER_A);
				dataSourceJLP.setPassword(Config.DBPASSWORLD_A);

				dataSourceJLP.setInitialPoolSize(3);
				dataSourceJLP.setMaxPoolSize(10);

			}
			this.db="jlp";
	
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	public DbConnect(String mdb) {
		try{
						
			if(dataSourceMDB==null){
				
				dataSourceMDB=new ComboPooledDataSource();
				
		        //设置连接参数
				dataSourceMDB.setJdbcUrl(Config.DBURL_B);
				dataSourceMDB.setDriverClass(Config.DBDRIVER);
				dataSourceMDB.setUser(Config.DBUSER_B);
				dataSourceMDB.setPassword(Config.DBPASSWORLD_B);

				dataSourceMDB.setInitialPoolSize(3);
				dataSourceMDB.setMaxPoolSize(10);

			}
	
			this.db="mdb";
			
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	/**
	 * 取得已经构造生成的数据库连接
	 * @return 返回数据库连接对象
	 */
	public Connection getConnect(){
		
		try {
			if(db.equals("mdb")){
				
				return dataSourceMDB.getConnection();
				
			}else if(db.equals("jlp")){
				
				return dataSourceJLP.getConnection();
				
			}

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
		
	}
}
3、oracle数据库连接池:

package oracle;

import java.sql.Connection;
import java.sql.SQLException;

import com.mchange.v2.c3p0.ComboPooledDataSource;

import config.Config;

/**
 * Oracle链接数据库对象
 * @author Administrator
 *
 */
public class OracleConnect {
	private static ComboPooledDataSource dataSourceTest=null;
	
	/**
	 * 构造函数完成数据库的连接和连接对象的生成
	 */
	public OracleConnect() {
		try{
			
			if(dataSourceTest==null){
				
				dataSourceTest=new ComboPooledDataSource();
				
		        //设置连接参数
				dataSourceTest.setJdbcUrl(Config.DBURL_C);
				dataSourceTest.setDriverClass(Config.ODBDRIVER);
				dataSourceTest.setUser(Config.DBUSER_C);
				dataSourceTest.setPassword(Config.DBPASSWORLD_C);

				dataSourceTest.setInitialPoolSize(3);
				dataSourceTest.setMaxPoolSize(10);

			}
	
		}catch(Exception e){
			
			e.printStackTrace();
			
		}
		
	}
	/**
	 * 取得已经构造生成的数据库连接
	 * @return 返回数据库连接对象
	 */
	public Connection getConnect(){
		try {
				
			return dataSourceTest.getConnection();

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return null;
	}
}

4、对应的调用:

Connection conA=new DbConnect().getConnect();//获取Mysql A数据库连接对象
Connection conB=new DbConnect("mdb").getConnect();//获取Mysql B数据库连接对象
Connection conC=new OracleConnect().getConnect();//获取Oracle C数据库连接对象



发布了35 篇原创文章 · 获赞 44 · 访问量 21万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章