zoukankan      html  css  js  c++  java
  • jdbc 以及 事务的java类编写

    package com.gaosheng.utils;


    import java.sql.Connection;
    import java.sql.SQLException;

    import javax.sql.DataSource;

    import com.mchange.v2.c3p0.ComboPooledDataSource;

    public class JdbcUtil {
    private static DataSource datasource = new ComboPooledDataSource(); //连接池对象
    static ThreadLocal<Connection> t = new ThreadLocal();
    private static Connection conn = null; //定义一个事务的专用连接

    //获得连接池对象
    public static DataSource getDatasource(){
    return datasource;
    }

    //获得连接对象
    public static Connection getConnection() throws SQLException{
    conn = t.get();
    if(conn == null) {
    return datasource.getConnection();
    }
    return conn;
    }

    //开启事务方法
    public static void beginTranscation() throws SQLException{
    conn = t.get();
    if(conn != null) {
    throw new SQLException("事务已经开启,在没有结束当前事务时,不能再开启事务!");
    }

    conn = datasource.getConnection();
    conn.setAutoCommit(false);
    t.set(conn);
    }

    //提交事务的方法
    public static void commitTransaction() throws SQLException{
    conn = t.get();
    if(conn == null) {
    throw new SQLException("当前没有事务,所以不能提交事务!");
    }
    conn.commit();
    conn.close();
    //conn = null;
    t.remove();
    }

    //回滚事物的方法
    public static void rollbackTransaction() throws SQLException{
    if(conn == null) {
    throw new SQLException("当前没有事务,所以不能回滚事务!");
    }
    conn.rollback();
    conn.close();
    //conn = null;
    t.remove();
    }
    }

    package com.gaosheng.utils;


    import java.sql.Connection;
    import java.sql.SQLException;

    import org.apache.commons.dbutils.QueryRunner;
    import org.apache.commons.dbutils.ResultSetHandler;

    public class TxQueryRunner extends QueryRunner{

    @Override
    public int[] batch(String sql, Object[][] params) throws SQLException {
    Connection conn = JdbcUtil.getConnection();
    return super.batch(conn, sql, params);
    }


    @Override
    public <T> T query(String sql, Object param, ResultSetHandler<T> rsh) throws SQLException {
    Connection conn = JdbcUtil.getConnection();
    return super.query(conn,sql, param, rsh);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, java.lang.Object[], org.apache.commons.dbutils.ResultSetHandler)
    */
    @Override
    public <T> T query(String sql, Object[] params, ResultSetHandler<T> rsh) throws SQLException {
    Connection conn = JdbcUtil.getConnection();
    return super.query(conn,sql, params, rsh);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler, java.lang.Object[])
    */
    @Override
    public <T> T query(String sql, ResultSetHandler<T> rsh, Object... params) throws SQLException {
    // TODO Auto-generated method stub
    return super.query(sql, rsh, params);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#query(java.lang.String, org.apache.commons.dbutils.ResultSetHandler)
    */
    @Override
    public <T> T query(String sql, ResultSetHandler<T> rsh) throws SQLException {
    // TODO Auto-generated method stub
    return super.query(sql, rsh);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String)
    */
    @Override
    public int update(String sql) throws SQLException {
    // TODO Auto-generated method stub
    return super.update(sql);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object)
    */
    @Override
    public int update(String sql, Object param) throws SQLException {
    // TODO Auto-generated method stub
    return super.update(sql, param);
    }

    /* (non-Javadoc)
    * @see org.apache.commons.dbutils.QueryRunner#update(java.lang.String, java.lang.Object[])
    */
    @Override
    public int update(String sql, Object... params) throws SQLException {
    Connection conn = JdbcUtil.getConnection();
    return super.update(conn,sql, params);
    }


    }

  • 相关阅读:
    SqlServer2005自动备份
    在Win7下运行使用BDE的程序
    Hibernate连接SqlServer时的小问题
    使用Delphi在SqlServer中对日期的设置
    Flex中连接J2ee的一个小问题
    np使用创建图像 霍夫圆检测 video操作,显示canny边缘
    Web.config的配置
    SQL 进制间如何转换
    jQuery 设置和获取HTML,文本和值
    通过LINQ to XML生成 XML
  • 原文地址:https://www.cnblogs.com/0307lmy/p/11685347.html
Copyright © 2011-2022 走看看