C3P0数据源的使用

Posted lemon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C3P0数据源的使用相关的知识,希望对你有一定的参考价值。

1.C3P0数据源的使用

    C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。C3P0有自己的格式文件,如下

<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
  <default-config>
      <property name="driverClass">com.mysql.jdbc.Driver</property>
      <property name="jdbcUrl">jdbc:mysql:///day05</property>
      <property name="user">root</property>
      <property name="password">root</property>
    <property name="initialPoolSize">10</property>
    <property name="maxIdleTime">30</property>
    <property name="maxPoolSize">100</property>
    <property name="minPoolSize">10</property>
  </default-config>
</c3p0-config>

 

 

  1. 导jar包:
  2. 建立c3p0连接

 

package com.beiwo.day05.util;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.sql.DataSource;
import com.mchange.v2.c3p0.ComboPooledDataSource;

public class C3P0Util {
	
	//C3P0数据源
	private static ComboPooledDataSource dataSource=new ComboPooledDataSource();
	
	public static DataSource getDataSource() {
		return dataSource;
	}
	
	
	public static Connection getConn(){
		try {
			return dataSource.getConnection();
		} catch (SQLException  e) {
			throw new  RuntimeException(e);
		}
	}
	
	public static Connection getConn2(){
		Connection conn=null;
		
		try {
			conn=dataSource.getConnection();
		} catch (Exception  e) {
			e.printStackTrace();
		}
		
		return conn;
	}
	
	//释放连接
	public static void realease(ResultSet rs,Statement stmt,Connection conn){
		try {
			if(null!=rs){
				rs.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			if(null!=stmt){
				stmt.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
		try {
			if(null!=conn){
				conn.close();
			}
		} catch (Exception e) {
			// TODO: handle exception
		}
	}
}

     

測試C3P0的使用

package com.beiwo.day05.test;
import java.sql.Connection;
import org.junit.Test;
import com.beiwo.day05.util.C3P0Util;

public class TestC3P0 {

	@Test
	public void testC3P0(){
		Connection connection = C3P0Util.getConn();
		System.out.println(connection.getClass().getName());
		C3P0Util.realease(null, null, connection);
	}
}

 

以上是关于C3P0数据源的使用的主要内容,如果未能解决你的问题,请参考以下文章

C3P0连接池操作数据库

jdk1.6.0_29的bug导致c3p0获取sqlserver连接时被hang住甚至deadlock问题的分析

如何使用c3p0+spring连接oracle数据库

c3p0数据库连接池的使用详解

c3p0连接池使用

c3p0配置详解