C3P0使用笔记

C3P0连接MySQL笔记


简介

C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展。目前使用它的开源项目有Hibernate,Spring等


使用方式

准备工作

导入C3P0连接池的jar包

    1. 建议在项目下新建一个文件夹lib,专门存放架包(jar)
    2. 对应的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>

创建连接池对象的两种方式

    1. 不带参数,则使用xml文件中默认的数据

    1. 带参数名称,则使用xml中有name中参数名的数据

实例代码

@Test

     public void testC3P0() {

           Connection conn = null;

           PreparedStatement pstemt = null;

           ResultSet rs = null;

           // 1.导入C3P0jar,创建连接池对象(对象创建成功,则自动会去识别xml文件中的数据)

           ComboPooledDataSource dataSource = new ComboPooledDataSource();

           // 带参数的连接池对象(oraclexml文件中的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);

           }

     }

 

猜你喜欢

转载自blog.csdn.net/Wenfee_Gong/article/details/81572470