自定义连接池:用装饰设计模式将原连接的close方法改造成将连接还回数据源;装饰设计模式:http://www.cnblogs.com/tongxuping/p/6832518.html;
开源数据库连接池:
C3P0连接池:
基本步骤:
1.导入开发包
2.创建数据库连接池
ComboPooledDataSource cpds = new ComboPooledDataSource();
3.配置基本的连接信息
a) 通过setters方法来设置参数
b) 通过c3p0-config.xml文件来配置基本连接信息
c) 通过c3p0.properties文件来配置基本连接信息
示例代码:
1 package Pool; 2 3 4 import java.sql.Connection; 5 import java.sql.PreparedStatement; 6 7 import JDBCutils.JDBCutils; 8 9 import com.mchange.v2.c3p0.ComboPooledDataSource; 10 11 /* 12 * c3p0 是个开源是数据源 13 * c3p0被称为数据库链接池,用来管理数据库链接的获取和存储。 14 * 有两种写法: 15 * 方式一:在创建对象后直接设置JDBC的基本信息,如:数据库驱动,数据库url,登陆数据库用户名和密码;然后再对数据库操作 16 * 方式二:外建一个xml或者properties配置文件,存在配置文件时无需对数据库基本信息进行设置。直接获取数据库连接,对数据库相应的操作 17 */ 18 public class C3P0 { 19 public static void main(String[] args) { 20 21 Connection conn = null; 22 PreparedStatement ps=null; 23 //通过ComboPooledDataSource获取dateSource即数据源,可从中获取数据库的链接。 24 ComboPooledDataSource pool = new ComboPooledDataSource(); 25 //ComboPooledDataSource pool = new ComboPooledDataSource("config1"); 26 /* 27 * 传参表示需要使用config1的配置信息为数据库操作信息 28 */ 29 try { 30 /*pool.setDriverClass("com.mysql.jdbc.Driver"); 31 pool.setJdbcUrl("jdbc:mysql:///mydb5"); 32 pool.setUser("root"); 33 pool.setPassword("admin");*/ 34 35 conn = pool.getConnection(); 36 String sql="delete from tb_batch where id>?"; 37 ps = conn.prepareStatement(sql); 38 ps.setInt(1, 20); 39 int rows = ps.executeUpdate(); 40 System.out.println(rows); 41 42 43 44 } catch (Exception e) { 45 e.printStackTrace(); 46 }finally{ 47 JDBCutils.closeResou(conn, ps, null); 48 } 49 } 50 }
XML配置:XML文件名必须为:c3p0-config.xml,否则都不到配置信息;name不能随意写。
1 <?xml version="1.0" encoding="UTF-8"?> 2 <c3p0-config> 3 <default-config> 4 <!-- setting --> 5 <!-- c3p0默认读取这块 --> 6 <property name="driverClass">com.mysql.jdbc.Driver</property> 7 <property name="jdbcUrl">jdbc:mysql:///mydb5</property> 8 <property name="user">root</property> 9 <property name="password">admin</property> 10 </default-config> 11 12 13 <named-config name="config1"> 14 <!-- --> 15 <property name="driverClass">com.mysql.jdbc.Driver</property> 16 <property name="jdbcUrl">jdbc:mysql:///mydb1</property> 17 <property name="user">admin</property> 18 <property name="password">123</property> 19 </named-config> 20 </c3p0-config>
Properties配置:
1 c3p0.driverClass=com.mysql.jdbc.Driver 2 c3p0.jdbcUrl=jdbc:mysql:///mydb1 3 c3p0.user=root 4 c3p0.password=root