C3P0使用笔记
C3P0连接MySQL笔记
简介
C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等
使用方式
准备工作
导入C3P0连接池的jar包
-
- 建议在项目下新建一个文件夹lib,专门存放架包(jar)
- 对应的jar文件右击-->Build Path -->Add to Build Path完成
创建xml文件
在项目src路径下创建xml文件,文件名要求:c3p0-config.xml
对于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:///web10</property> <property name="user">root</property> <property name="password">123456</property> <property name="initialPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config>
<named-config name="oracle"> <property name="driverClass">com.mysql.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql:///web10</property> <property name="user">root</property> <property name="password">123456</property> </named-config>
</c3p0-config> |
创建连接池对象的两种方式
-
- 不带参数,则使用xml文件中默认的数据
-
- 带参数名称,则使用xml中有name中参数名的数据
实例代码
@Test public void testC3P0() { Connection conn = null; PreparedStatement pstemt = null; ResultSet rs = null; // 1.导入C3P0的jar,创建连接池对象(对象创建成功,则自动会去识别xml文件中的数据) ComboPooledDataSource dataSource = new ComboPooledDataSource(); // 带参数的连接池对象(oracle在xml文件中的name) // ComboPooledDataSource dataSource2 = new ComboPooledDataSource("oracle"); try { // 2.C3P0连接池获得连接 conn = dataSource.getConnection(); // 3.编写sql语句 String sql = "SELECT * FROM product WHERE pid=?"; // 4.执行sql语句的对象 pstemt = conn.prepareStatement(sql); // 5.设置占位符?的值(占位符?防止SQL注入攻击) pstemt.setString(1, "p009"); // 6.执行sql语句 rs = pstemt.executeQuery(); // 7.输出查询结果 while (rs.next()) { System.out.println( rs.getObject(1) + "-->" + rs.getObject(2) + "-->" + rs.getObject(3) + "-->" + rs.getObject(4)); } } catch (SQLException e) { e.printStackTrace(); } finally { // 8.释放资源(finally会在抛出异常后执行,保证资源的释放) JDBCUtils_v4.closeAll(conn, pstemt, rs); } } |