请问  dbUtils 如何进行事物处理???着急啊 ~~~~~~~~没找到懂的人  说明一下~~ 我现在有 2个 SQL是同时执行的  所以 必须要事物  如果是手动 进行事物处理的话? 代码怎样写·~~~~@@@@  谢谢啦  

解决方案 »

  1.   

    不知道你指的是不是java里的apache的commons-dbutils这个开发包这个只是封装了一些对db的通用操作,执行脚本,导入数据,导出数据等功能,并不是以persistence layer的封装为主要目的的。所以这里他主要是根据conn来操作,你如果要自己来控制事务的话,你需要自己通过对conn来commit和rollback,我们一般都是用他来做数据准备而已,他提供ant和maven的插件。
      

  2.   


    对 ,就是 commons-dbutils下的
    能把connection自动提交取消  但我操作不了 封装类 所以就要看那看 其他方式   
      

  3.   

    封装了很多 代码可能晕 都贴出来吧
    public class QueryRunnerMgr { private static QueryRunner runner = new QueryRunner(DBCPConnMgr.getInstance().getDataSource());

    /**
     * @return 已经加入数据库连接的queryrunner
     * @author 逄晓 2008-12-9
     */
    public static QueryRunner getQueryRunner(){
    return runner;
    }
    }public class DBCPConnMgr implements IConnMgr{ /**
     * Logger for this class
     */
    private static final Log logger = LogFactory.getLog(DBCPConnMgr.class); private static IConnMgr single = null ; private ObjectPool objectPool = null;

    /**
     * 数据库连接源
     */
    private DataSource datasource = null; private DBCPConnMgr() {
    } /**
     * @return 得到一个实例
     * <p>1.0.0.0 逄晓创建 Nov 27, 2007</p>
     */
    public synchronized static IConnMgr getInstance(){
    if (single == null) {
    single = new DBCPConnMgr();
    }
    return single ;
    }

    /**
     * 设置数据库连接池
     * @throws Exception 
     */
    public void initDatabase() throws Exception {
    if (logger.isInfoEnabled()) {
    logger.info("准备初始化DBCP连接池,database url:"  + Ora_PropertiesConstants.DB_URL);
    } /*
     * 在配置文件中,取出需要的所有配置信息
     */
    int maxActive = Ora_PropertiesConstants.DBCP_MAX_ACTIVE;
    int maxIdle = Ora_PropertiesConstants.DBCP_MAX_IDLE;
    int maxWait = Ora_PropertiesConstants.DBCP_MAX_WAIT;
    int minIdle = Ora_PropertiesConstants.DBCP_MIN_IDLE; try {
    /**
     * 首先创建一个对象池来保存数据库连接 使用 commons.pool 的 GenericObjectPool对象
     */
    GenericObjectPool connectionPool = new GenericObjectPool();
    // 为数据库连接池设置参数
    connectionPool.setMaxActive(maxActive);
    connectionPool.setMaxIdle(maxIdle);
    connectionPool.setMaxWait(maxWait);
    connectionPool.setMinIdle(minIdle);

    /**
     * 加载oracle的数据库驱动
     */
    Class.forName(Ora_PropertiesConstants.DB_JDBC_DRIVER);
    /**
     * 注册PoolingDriver。
     */
    Class.forName("org.apache.commons.dbcp.PoolingDriver"); /**
     * 创建一个 DriverManagerConnectionFactory对象 连接池将用它来获取一个连接
     */
    ConnectionFactory connectionFactory = new DriverManagerConnectionFactory(
    Ora_PropertiesConstants.DB_URL, Ora_PropertiesConstants.DB_USER,
    Ora_PropertiesConstants.DB_PASSWD); /**
     * 创建一个PoolableConnectionFactory 对象。
     */
    PoolableConnectionFactory poolableConnectionFactory = new PoolableConnectionFactory(
    connectionFactory, connectionPool, null, null, false, true); objectPool = poolableConnectionFactory.getPool();
    PoolingDataSource source = new PoolingDataSource(objectPool);

    this.datasource = source;
    } catch (ClassNotFoundException e) {
    throw e;
    } /*
     * The BasicDataSource has lazy initialization borrowing a connection
     * will start the DataSource and make sure it is configured correctly.
     */
    try {
    Connection conn = this.datasource.getConnection();
    conn.close();
    } catch (Exception e) {
    this.shutDown();
    logger.error("获取数据库连接失败...请检查数据库是否运行正常,网络连接是否正常...");
    logger.error(MethodUtil.printExceptionErr(e));
    throw new SQLException("Can't connect to Database...");
    } if (logger.isInfoEnabled()) {
    logger.info("初始化数据库连接池成功");
    }
    } /* (non-Javadoc)
     * @see com.lingtu.qihua_upgrade.dao.IDaoManager#getDataSource()
     */
    public DataSource getDataSource() {
    return this.datasource;
    }

        /*
     * (non-Javadoc)
     * 
     * @see com.lingtu.dbbroker.dao.DBConn#shutDownDriver()
     */
    public void shutDown() {
    try {
    objectPool.close();
    if (logger.isInfoEnabled()) {
    logger.info("DBCP数据库连接池正常关闭");
    }
    } catch (Exception e) {
    logger.error("关闭数据库连接池失败,异常信息为 --> " + e.getMessage());
    }
    } @Override
    public String getStatus() {
    StringBuffer sb = new StringBuffer(32);
    sb.append( " +++ [DBCP] connented to Database url:" );
    sb.append( Ora_PropertiesConstants.DB_URL );
    sb.append("\tTry to getting a database connection is:");
    try {
    Connection conn = getDataSource().getConnection();
    conn.close();
    sb.append("SUCCEED...");
    } catch (SQLException e) {
    sb.append("FAILED...");


    return sb.toString();
    }
    }在这有数据库连接操作 封装在这里了