C3P0数据库连接池源代码

来源:互联网 发布:d3.js的作用 编辑:程序博客网 时间:2024/05/22 06:14

步骤如下:

导入c3p0-0.9.1.2.jar

1. 创建 c3p0-config.xml 文件, 
2. 创建 ComboPooledDataSource 实例;
 DataSource dataSource =new ComboPooledDataSource("helloc3p0");  
 3. 从 DataSource 实例中获取数据库连接. 

第一种方法:不使用工具类

package tan.com;import java.io.InputStream;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.Properties;import javax.sql.DataSource;import org.apache.commons.dbcp.BasicDataSource;import org.apache.commons.dbcp.BasicDataSourceFactory;import org.junit.Test;import com.mchange.v2.c3p0.ComboPooledDataSource;public class TestJDBC {/**如何使用c3p0? * 1. 创建 c3p0-config.xml 文件,  * 2. 创建 ComboPooledDataSource 实例; * DataSource dataSource =new ComboPooledDataSource("helloc3p0");   * 3. 从 DataSource 实例中获取数据库连接.  */@Testpublic void testC3poWithConfigFile() throws Exception{DataSource dataSource = new ComboPooledDataSource("helloc3p0");  System.out.println(dataSource.getConnection()); //获取数据库连接池最大连接数ComboPooledDataSource comboPooledDataSource = (ComboPooledDataSource) dataSource;System.out.println(comboPooledDataSource.getMaxStatements()); }

配置c3p0-config.xml

<?xml version="1.0" encoding="UTF-8"?><c3p0-config><named-config name="helloc3p0"><!-- 指定连接数据源的基本属性 --><property name="user">root</property><property name="password">1234</property><property name="driverClass">com.mysql.jdbc.Driver</property><property name="jdbcUrl">jdbc:mysql:///tan</property><!-- 若数据库中连接数不足时, 一次向数据库服务器申请多少个连接 --><property name="acquireIncrement">5</property><!-- 初始化数据库连接池时连接的数量 --><property name="initialPoolSize">5</property><!-- 数据库连接池中的最小的数据库连接数 --><property name="minPoolSize">5</property><!-- 数据库连接池中的最大的数据库连接数 --><property name="maxPoolSize">10</property><!-- C3P0 数据库连接池可以维护的 Statement 的个数 --><property name="maxStatements">20</property><!-- 每个连接同时可以使用的 Statement 对象的个数 --><property name="maxStatementsPerConnection">5</property></named-config></c3p0-config>

第二种方法:使用工具类JDBCTools.java

package tan.com;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 JDBCTools {//数据库连接池应该只被初始化一次(多个项目共享一个连接池就够了)private static DataSource dataSource=null;static{dataSource=new ComboPooledDataSource("helloc3p0");}public static Connection getConnection() throws Exception{return dataSource.getConnection();}    /**     * 2、关闭资源     * 关闭资源关闭 Statement 和 Connection和ResultSet     * @param rs     * @param statement     * @param conn     */public static void release(ResultSet rs, Statement statement, Connection conn) {if(rs != null){try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (statement != null) {try {statement.close();} catch (Exception e2) {e2.printStackTrace();}}if (conn != null) {try {conn.close();} catch (Exception e2) {e2.printStackTrace();}}}/** * 关闭 Statement 和 Connection * @param statement * @param conn */public static void release(Statement statement, Connection conn) {if (statement != null) {try {statement.close();} catch (Exception e2) {e2.printStackTrace();}}if (conn != null) {try {conn.close();} catch (Exception e2) {e2.printStackTrace();}}}}
使用关键代码:

//如何从数据库连接池中获取连接呢?@Testpublic void testJDBCTools() throws Exception{Connection connection=JDBCTools.getConnection();System.out.println(connection);}


\



0 0
原创粉丝点击