C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等。
这里不详谈 只做实现 去往官网下载c3p0 jar包:http://www.126disk.com/fileview_1619526.html
1、jdbc.properties 配置文件
#JDBC连接驱动 jdbc.driver=com.mysql.jdbc.Driver #服务器连接地址 jdbc.url=jdbc:mysql://127.0.0.1:3306/data?autoReconnect=true&useUnicode=true&characterEncoding=UTF-8 #用户名 jdbc.username=root #密码 jdbc.password=123456 #连接池 #初始化连接 jdbc.initialPoolSize=10 # 最大连接 jdbc.maxPoolSize=20 #最小连接 jdbc.minPoolSize=5 #等待时间s jdbc.maxIdleTime=30000
2、程序实现
package com.ai.util; import java.beans.PropertyVetoException; import java.io.*; import java.sql.*; import java.util.Properties; import org.apache.log4j.Logger; import com.mchange.v2.c3p0.ComboPooledDataSource; public class JDBCUtil { private static Logger log=Logger.getLogger(JDBCUtil.class); //使用c3p0 连接池 private static ComboPooledDataSource ds; static { ds=new ComboPooledDataSource(); //加载驱动 try { ds.setDriverClass(getProperties("jdbc.driver")); } catch (PropertyVetoException e) { log.error("加载驱动失败",e); e.printStackTrace(); } //数据库连接 ds.setJdbcUrl(getProperties("jdbc.url")); //用户 ds.setUser(getProperties("jdbc.username")); //密码 ds.setPassword(getProperties("jdbc.password")); //初始化开几个连接 ds.setInitialPoolSize(Integer.parseInt(getProperties("jdbc.initialPoolSize"))); //最大开几个 ds.setMaxPoolSize(Integer.parseInt(getProperties("jdbc.maxPoolSize"))); //最小开几个 ds.setMinPoolSize(Integer.parseInt(getProperties("jdbc.minPoolSize"))); //设置等待时间 ds.setMaxIdleTime(Integer.parseInt(getProperties("jdbc.maxIdleTime"))); } public final static Connection getConnection(){ try { return ds.getConnection(); } catch (SQLException e) { log.error("获取连接失败",e); e.printStackTrace(); } return null; } //关闭连接 public final static void closeConntion(ResultSet re,PreparedStatement psnt,Connection conn){ if(re!=null) try { re.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(psnt!=null) try { psnt.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } if(conn!=null) try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } // 读取连接数据文件 public final static String getProperties(String name){ InputStream str=Thread.currentThread().getContextClassLoader().getResourceAsStream("config/hibernet/jdbc.properties"); Properties properties=new Properties(); try { properties.load(str); return properties.getProperty(name); } catch (FileNotFoundException e) { e.printStackTrace(); log.error("读取jdbc.properties文件不存在",e); } catch (IOException e) { e.printStackTrace(); log.error("读取jdbc.properties文件异常",e); } return ""; } public static String query(){ Connection conn=JDBCUtil.getConnection(); PreparedStatement psnt=null; ResultSet re=null; String sql="select * from customerinfo"; try { psnt=conn.prepareStatement(sql); re=psnt.executeQuery(); if(re.next()){ return re.getString("customerid"); } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally{ closeConntion(re, psnt, conn); } return ""; } public static void main(String[] args) { System.out.println(JDBCUtil.query()); // System.out.println(getConnection()); // System.out.println(getProperties("driver")); // System.out.println(getProperties("username")); // System.out.println(getProperties("password")); // System.out.println(getProperties("url")); } }
相关推荐
使用c3p0所需jar包
c3p0连接池使用方法
c3p0连接池jar包
C3P0数据库连接池和jar包,因为jdbc没有保持连接的能力,一旦超过一定时间没有使用(大约几百毫秒),连接就会被自动释放掉。而每次新建连接都需要140毫秒左右的时间,所以耗费时间比较多。若使用C3P0连接池来池化...
JDBC中C3p0连接池使用方法 (个人总结综合教程,适合新入门的朋友阅读)
c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包c3p0连接池JAR包
c3p0连接池配置使用
c3p0连接池工具
c3p0-0.9.2.1.jar&&hibernate-c3p0-4.0.0.Final[1].jar&&mchange-commons-java-0.2.3.4.jar
C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解C3P0连接池配置详解
C3P0数据库连接池jar包和配置文件
C3P0连接池
c3p0连接池配置, 个人找了很多资料 都在.txt里面,有项目完整配置,解释,还有一些相关网站资料等
C3P0数据库连接池的源代码
jdbc使用c3p0连接池连接数据库,支持配置多个数据源,有相关的查询测试。
C3P0连接池参数配置
一个spring + c3p0 连接池的例子,通过这个例子可以学习简单的spring配置和c3p0连接池的知识
c3p0连接池连接数据实例和jar包,有详细的实例参考
c3p0连接池jar包,完整数据包。 c3p0与dbcp区别 dbcp没有自动回收空闲连接的功能 c3p0有自动回收空闲连接功能