C3P0使用详细说明

1、官网下载C3P0 jar包  放到项目的lib下面

2、在src目录下新建一个c3p0-config.xml 的文件

里面 具体写

 

 <?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
 <!-- 默认配置,只可以出现一次  可以在下面使用指定名称的配置,一般使用默认配置就可以了-->
 <default-config>
  <!-- 连接超时设置30秒 -->
  <property name="checkoutTimeout">30000</property>
  <!-- 30秒检查一次connection的空闲 -->
  <property name="idleConnectionTestPeriod">30</property>
  <!--初始化的池大小 -->
  <property name="initialPoolSize">3</property>
  <!-- 最多的一个connection空闲时间 -->
  <property name="maxIdleTime">30</property>
  <!-- 最多可以有多少个连接connection -->
  <property name="maxPoolSize">10000</property>
  <!-- 最少的池中有几个连接 -->
  <property name="minPoolSize">3</property>
  <!-- 批处理的语句最大条数限制-->
  <property name="maxStatements">150</property>
  <!-- 每次增长几个连接 -->
  <property name="acquireIncrement">5</property>
  <!-- 数据库驱动名称 -->
  <property name="driverClass">com.mysql.jdbc.Driver</property>
  <!--数据库连接url  -->
  <property name="jdbcUrl">jdbc:mysql://127.0.0.1:3306/wzxykqsys?useUnicode=true&amp;characterEncoding=UTF-8</property>
  <!-- 数据库名称 -->
  <property name="user">root</property>
  <!-- 数据库密码 -->
  <property name="password">123456</property>
 </default-config>
</c3p0-config>

 

3、新建一个获取数据库连接的类,里面写以下几个方法。

 

import java.sql.*;

import javax.sql.DataSource;

import com.mchange.v2.c3p0.ComboPooledDataSource;

public class DBUtil {

 private static DataSource ds;

 private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();
 static {
  ds = new ComboPooledDataSource();//直接使用即可,不用显示的配置,其会自动识别配置文件
 }

 public static DataSource getDataSource() {
  return ds;
 }

 public static Connection getConnection() {
  try {
   // 得到当前线程上绑定的连接
   Connection conn = tl.get();
   if (conn == null) { // 代表线程上没有绑定连接
    conn = ds.getConnection();
    tl.set(conn);
   }
   return conn;
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
 }

 public static void startTransaction() {
  try {
   // 得到当前线程上绑定连接开启事务
   Connection conn=getConnection();
   conn.setAutoCommit(false);
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
 }

 public static void commitTransaction() {
  try {
   Connection conn = tl.get();
   if (conn != null) {
    conn.commit();
   }
  } catch (Exception e) {
   throw new RuntimeException(e);
  }
 }

 public static void closeConnection() {
  try {
   Connection conn = tl.get();
   if (conn != null) {
    conn.close();
   }
  } catch (Exception e) {
   throw new RuntimeException(e);
  } finally {
   tl.remove(); // 千万注意,解除当前线程上绑定的链接(从threadlocal容器中移除对应当前线程的链接)
  }
 }
 /**
  * @author fulunyong
  * @date 2014-11-11下午8:17:22
  * @作用:查询语句母体
  * @返回类型:ResultSet
  */

 public static ResultSet Query(Connection con, PreparedStatement ps,
   ResultSet rs, String sql, String[] canshu) {
  try {
   ps = con.prepareStatement(sql);
   for (int i = 0; i < canshu.length; i++) {
    ps.setString(i + 1, canshu[i]);
   }
   rs = ps.executeQuery();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return rs;
 }

 /**
  * @author fulunyong
  * @date 2014-11-11下午8:20:45
  * @作用:更新语句母体 所有的
  * @返回类型:boolean
  */

 public static boolean QueryUpdata(Connection con, PreparedStatement ps,
   String sql, String[] canshu) {
  // 返回标志
  boolean trun = true;
  try {
   ps = con.prepareStatement(sql);
   for (int i = 0; i < canshu.length; i++) {
    ps.setString(i + 1, canshu[i]);
   }
   trun = ps.execute();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  return trun;
 }

}

 

4、操作数据库需要获取连接时 可以直接调用上面的方法

 

 

 

 


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值