zoukankan      html  css  js  c++  java
  • c3p0封装

    在今天下午授课过程中 在处理数据库事物时需要同一个Connection  但是dbcp无法获得  单独工具也显得繁琐,改进成c3p0工具类如下

    package utils;

    import java.sql.Connection;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.sql.Statement;

    import javax.sql.DataSource;

    import com.mchange.v2.c3p0.ComboPooledDataSource;

    public class DataSourceUtils {

    private static DataSource dataSource = new ComboPooledDataSource();

    private static ThreadLocal<Connection> tl = new ThreadLocal<Connection>();

    // 直接可以获取一个连接池
    public static DataSource getDataSource() {
    return dataSource;
    }

    public static Connection getConnection() throws SQLException{
    return dataSource.getConnection();
    }

    // 获取连接对象
    public static Connection getCurrentConnection() throws SQLException {

    Connection con = tl.get();
    if (con == null) {
    con = dataSource.getConnection();
    tl.set(con);
    }
    return con;
    }

    // 开启事务
    public static void startTransaction() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.setAutoCommit(false);
    }
    }

    // 事务回滚
    public static void rollback() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.rollback();
    }
    }

    // 提交并且 关闭资源及从ThreadLocall中释放
    public static void commitAndRelease() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.commit(); // 事务提交
    con.close();// 关闭资源
    tl.remove();// 从线程绑定中移除
    }
    }

    // 关闭资源方法
    public static void closeConnection() throws SQLException {
    Connection con = getCurrentConnection();
    if (con != null) {
    con.close();
    }
    }

    public static void closeStatement(Statement st) throws SQLException {
    if (st != null) {
    st.close();
    }
    }

    public static void closeResultSet(ResultSet rs) throws SQLException {
    if (rs != null) {
    rs.close();
    }
    }

    }

  • 相关阅读:
    Java反射实现几种方式
    kettle之几个.bat初步介绍
    eclipse 启动项目时候报的错误
    转:kettle中调度kitchen.bat后面接参数,写定时更新任务
    hibernate4,manytomany
    hibernate4,onetomany
    Javascript系列之在HTML中使用JavaScript
    Javascript系列之js简介
    004 C++ 指针
    003 C++ 函数
  • 原文地址:https://www.cnblogs.com/lijun6/p/10498860.html
Copyright © 2011-2022 走看看