目录
1、下载驱动并加入项目
1>导入:c3p0-0.9.2.1.jar,mchange-commons-java-0.2.3.4.jar(关注左侧公众号:蓝多多的小仓库 回复“c3p0”即可获取资源)
2>File ------> Project Structure…------> Libraies------>+------>Java
mchange-commons-java-0.2.3.4.jar的导入同理:
2、配置c3p0-config.xml
如果不知道IDEA中如何创建xml文件请参考:IDEA中创建xml文件_蓝多多的小仓库-CSDN博客
注意:
完整配置:
<?xml version="1.0" encoding="UTF-8"?> <c3p0-config> <!-- C3P0的缺省(默认)配置, 如果在代码中“ComboPooledDataSource ds = new ComboPooledDataSource();”这样写就表示使用的是C3P0的缺省(默认)配置信息来创建数据源 --> <default-config> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/book_test?useSSL=false&serverTimezone=CTT&characterEncoding=utf8</property> <property name="user">root</property> <property name="password">123456</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </default-config> <!-- C3P0的命名配置, 如果在代码中“ComboPooledDataSource ds = new ComboPooledDataSource("MySQL");”这样写就表示使用的是name是MySQL的配置信息来创建数据源 --> <named-config name="MySQL"> <property name="driverClass">com.mysql.cj.jdbc.Driver</property> <property name="jdbcUrl">jdbc:mysql://localhost:3306/book_test?useSSL=false&serverTimezone=CTT&characterEncoding=utf8</property> <property name="user">root</property> <property name="password">123456</property> <property name="acquireIncrement">5</property> <property name="initialPoolSize">10</property> <property name="minPoolSize">5</property> <property name="maxPoolSize">20</property> </named-config> </c3p0-config>
3、编写工具类
/** * @author 蓝多多的小仓库 * @title: C3P0_Utils * @projectName ldd_firstpro * @description: ldd_annotation * @date 2022/1/13 15:23 */ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import com.mchange.v2.c3p0.ComboPooledDataSource; public class C3P0_Utils { private static ComboPooledDataSource dataSource = null; //在静态代码块中创建数据库连接池 static{ try{ dataSource = new ComboPooledDataSource("MySQL");//使用C3P0的命名配置来创建数据源 System.out.println(dataSource); }catch (Exception e) { throw new ExceptionInInitializerError(e); } } public static Connection getConnection() throws SQLException{ //从数据源中获取数据库连接 return dataSource.getConnection(); } // 释放资源 public static void release(Connection conn,Statement st,ResultSet rs){ if(rs!=null){ try{ //关闭存储查询结果的ResultSet对象 rs.close(); }catch (Exception e) { e.printStackTrace(); } rs = null; } if(st!=null){ try{ //关闭负责执行SQL命令的Statement对象 st.close(); }catch (Exception e) { e.printStackTrace(); } } if(conn!=null){ try{ //将Connection连接对象还给数据库连接池 conn.close(); }catch (Exception e) { e.printStackTrace(); } } } }
4、编写测试类并运行
如果你用我的数据库,请参考:使用JDBC连接Mysql数据库的步骤_蓝多多的小仓库-CSDN博客_jdbc连接数据库步骤
/** * @author 蓝多多的小仓库 * @title: DataSourceTest * @projectName ldd_firstpro * @description: ldd_annotation * @date 2022/1/13 15:24 */ import java.math.BigDecimal; import java.sql.Connection; import java.sql.Date; import java.sql.ResultSet; import java.sql.Statement; public class DataSourceTest { public void c3p0DataSourceTest() { Connection conn = null; Statement st = null; ResultSet rs = null; try { //获取数据库连接 conn = C3P0_Utils.getConnection(); String sql = "select * from bookinfo"; // 查询数据的sql语句 st = (Statement) conn.createStatement(); //创建用于执行静态sql语句的Statement对象,st属局部变量 rs = st.executeQuery(sql); //执行sql查询语句,返回查询数据的结果集 System.out.println("最后的查询结果为:"); while(rs.next()){ //遍历结果集,取出数据 int book_id = rs.getInt("book_id"); String book_name = rs.getString("book_name"); BigDecimal price = rs.getBigDecimal("price"); Date public_date = rs.getDate("public_date"); String store = rs.getString("store"); //输出数据 System.out.print("图书编号:"+book_id); System.out.print(",图书名称:"+book_name); System.out.print(",价格"+price); System.out.print(",出版日期"+public_date); System.out.print(",库存"+store); System.out.println(); } } catch (Exception e) { e.printStackTrace(); } finally { //释放资源 C3P0_Utils.release(conn, st, rs); } } public static void main(String[] args) { new DataSourceTest().c3p0DataSourceTest(); } }
测试结果:
5、致谢
感谢明哥@编程界明世隐 的技术指导!也感谢和多多一起学习交流的友友们!