关于网友提出的“ JavaBean中执行多行SQL语句时,如何捕捉错误”问题疑问,本网通过在网上对“ JavaBean中执行多行SQL语句时,如何捕捉错误”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: JavaBean中执行多行SQL语句时,如何捕捉错误
描述: 下面的程序伪代码是我封装在JavaBean中执行数据库更新操作的方法,为了完整性,我在方法中使用事务处理。但是,在执行类似下面的多行SQL语句时,如果第一行正确执行,则即使后面的语句有错误,也不会抛出异常!请各位高手指点迷津。
其中SQL语句的例子:
============================
delete from RESOURCE_RATES where RES_UID=3 /*第一行无错*/
insert into RESOURCE_RATESsssss(RES_UID,RR_RATE_TABLE,RR_FROM_DATE,RR_STD_RATE,RR_OVT_RATE,RR_PER_USE_COST) values('3',0,'2003-3-13','100','200','10') /*第二行(第N行)有错
数据库更新操作的伪代码:
=============================
public int exeUpdate(String updateString){
countInt=0;//初始化为0
try{
this.beginTrans();
countInt = drpStmt.executeUpdate(updateString);
this.commit();
}catch(Exception sqlz){
this.rollback();
countInt=-1;//返回-1,表示发生错误
strDBError="Error occur while using dataConn.exeUpdate()!The SQL is:
" + updateString + "
来自数据库的出错信息为:
" + sqlz.getMessage();
}
return countInt;
}
解决方案1: 因为...你的SQL只执行了第一行就结束了
(可能是这样吧)
分开``分开``
解决方案2: 分开执行吧,先exeUpdate("delete sql"),再exeUpdate("update sql").
api中对参数说"sql - an SQL INSERT, UPDATE or DELETE statement or an SQL statement that returns nothing"
解决方案3: 这样你还不如写个stored procedure呢?事务控制也可以在sp里完成。
解决方案4: 你是怎么执行多条sql语句的?
是多次调用该方法
还是在drpStmt.executeUpdate有处理?
你的事务及你的错误捕获只对方法exeUpdate有效
对方法drpStmt.executeUpdate没有效果
以上介绍了“ JavaBean中执行多行SQL语句时,如何捕捉错误”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/2561014.html