Home > Database > Mysql Tutorial > c3p0开源数据库连接池(DataSource)

c3p0开源数据库连接池(DataSource)

WBOY
Release: 2016-06-07 16:01:25
Original
1094 people have browsed it

现在很多WEB服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。 也有一些开源组织提供了数据源的独立实现: ①DBCP 数据库连接池

现在很多WEB服务器(Weblogic, WebSphere, Tomcat)都提供了DataSoruce的实现,即连接池的实现。通常我们把DataSource的实现,按其英文含义称之为数据源,数据源中都包含了数据库连接池的实现。
也有一些开源组织提供了数据源的独立实现:
①DBCP 数据库连接池
②C3P0 数据库连接池(使用最简单方便)
③Apache Tomcat内置的连接池(apache dbcp)

实际应用时不需要编写连接数据库代码,直接从数据源获得数据库的连接。程序员编程时也应尽量使用这些数据源的实现,以提升程序的数据库访问性能。

使用时,需要新建java工程,在工程中建立“lib”目录,其中添加c3p0-0.9.1.2.jar和mysql-connector-java-5.0.8-bin.jar(mysql驱动)包,并add to build path。

第一种方法:不使用xml配置文件。

/**
 * 演示c3p0的使用方法
 * @project_name Day11   
 * @class_name C3P0Demo   
 * @author Dovinya
 * @data 2014-8-27 下午07:57:42   
 * @version 1
 * @notes
 */
public class C3P0Demo {
	
	@Test
	public void operateDatabase() {
		Connection conn =null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
//			Class.forName("com.mysql.jdbc.Driver");
//			conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day11", "root", "123");
//			ps = conn.prepareStatement("select * from account");
			ComboPooledDataSource dataSource = new ComboPooledDataSource();
			
			
			dataSource.setDriverClass("com.mysql.jdbc.Driver");
			dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/day11");
			dataSource.setUser("root");
			dataSource.setPassword("123");
			
			
			conn = dataSource.getConnection();
			ps = conn.prepareStatement("select * from account");
			rs = ps.executeQuery();
			
			while(rs.next()){
				String name = rs.getString("name");
				System.out.println(name);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(rs!=null){
				try {
					rs.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					rs=null;
				}
			}
			
			if(ps!=null){
				try {
					ps.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					ps=null;
				}
			}
			
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					conn=null;
				}
			}			
		
		}
	}
	
}
Copy after login
第二种方法:使用xml配置文件,这种方法更常见和普遍。

先新建xml文件,命名为c3p0-config.xml,在其中添加如下代码:

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
	<default-config>
		<property name="driverClass">com.mysql.jdbc.Driver</property>
		<property name="jdbcUrl">jdbc:mysql:///day11</property>
		<property name="user">root</property>
		<property name="password">123</property>

		<property name="acquireIncrement">3</property>  <!--当连接池中已经没有连接时,连接池自动获取连接时一次获取的连接个数-->
		<property name="initialPoolSize">10</property>  <!--初始化连接池时,获取的连接个数-->
		<property name="minPoolSize">2</property>       <!--连接池应该保有的最小连接的数量--> 
		<property name="maxPoolSize">10</property>      <!--连接池中可以保有的最大连接数量-->
	</default-config>
</c3p0-config>
Copy after login
然后,新建java文件,在其中添加如下代码:
import com.mchange.v2.c3p0.ComboPooledDataSource;
/**
 * 演示c3p0的使用方法
 * @project_name Day11   
 * @class_name C3P0Demo   
 * @author Dovinya
 * @data 2014-8-27 下午07:57:42   
 * @version 1
 * @notes
 */
public class C3P0Demo {
	
	@Test
	public void operateDatabase() {
		Connection conn =null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {

			ComboPooledDataSource dataSource = new ComboPooledDataSource();
			
			conn = dataSource.getConnection();
			ps = conn.prepareStatement("select * from account");
			rs = ps.executeQuery();
			
			while(rs.next()){
				String name = rs.getString("name");
				System.out.println(name);
			}
			
		} catch (Exception e) {
			e.printStackTrace();
		}finally{
			if(rs!=null){
				try {
					rs.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					rs=null;
				}
			}
			
			if(ps!=null){
				try {
					ps.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					ps=null;
				}
			}
			
			if(conn!=null){
				try {
					conn.close();
				} catch (SQLException e) {
					
					e.printStackTrace();
				}finally{
					conn=null;
				}
			}			
		
		}
	}
	
}
Copy after login
开发时常用。
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template