dbUtils 如何进行事物处理???? 请问 dbUtils 如何进行事物处理???着急啊 ~~~~~~~~没找到懂的人 说明一下~~ 我现在有 2个 SQL是同时执行的 所以 必须要事物 如果是手动 进行事物处理的话? 代码怎样写·~~~~@@@@ 谢谢啦 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不知道你指的是不是java里的apache的commons-dbutils这个开发包这个只是封装了一些对db的通用操作,执行脚本,导入数据,导出数据等功能,并不是以persistence layer的封装为主要目的的。所以这里他主要是根据conn来操作,你如果要自己来控制事务的话,你需要自己通过对conn来commit和rollback,我们一般都是用他来做数据准备而已,他提供ant和maven的插件。 对 ,就是 commons-dbutils下的能把connection自动提交取消 但我操作不了 封装类 所以就要看那看 其他方式 封装了很多 代码可能晕 都贴出来吧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(); }}在这有数据库连接操作 封装在这里了 oracle数据库触发器可否调用远程JAVA程序 oracle两个表叠加和成一个视图,请各位大虾指点迷津 求助: ORA-00604: 递归 SQL 层 1 出现错误 oracle登陆名和密码忘掉了,可以找到吗? oracle导入问题 Oracle里没有top的?那么能什么来代替? 急,求助,100分,游标问题,快要烦死了! 一个长期未解决的问题,请各位指教 请斑竹保留!大家工作辛苦了,应该多多注意身体的保养!秘籍! 求一个对比两个数据库相同结构表的过程,如果一致则不变化,如果不一致,则生成增删改语句存到一张表中 c++中 输入单引号时 sql语句产生错误如何解决 查询排序的问题
对 ,就是 commons-dbutils下的
能把connection自动提交取消 但我操作不了 封装类 所以就要看那看 其他方式
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();
}
}在这有数据库连接操作 封装在这里了