您的位置:首页 > 其它

C3P0使用详细说明

2014-12-07 19:37 344 查看
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&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、操作数据库需要获取连接时 可以直接调用上面的方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: