JDBC高手,百思不得其解的bug
我的一bean的下面方法行有,想了N天不知道怎理,高手忙
=====================================================================
public boolean AuditingApp(int app_no,
String auditing_by,
String auditing_dt,
String rtc_rmk
) throws Exception {
Connection cnn = null;
PreparedStatement prmt = null;
PreparedStatement prmt1 = null;
DataSource das;
boolean lb_ok = true;
int i;
int j;
String sql = "update q_app_register set auditing_by=?, " +
"auditing_dt=?,rtc_rmk=?,app_result=? where app_no = ? ";
String sql2 = "update q_test_register set step = 'O ' where app_no = ? ";
das = getDataSource();
//System.out.println( "sql= "+sql);
try {
cnn = das.getConnection();
prmt = cnn.prepareStatement(sql);
prmt1 = cnn.prepareStatement(sql2);
prmt.setString(1, auditing_by);
prmt.setString(2, auditing_dt);
prmt.setString(3, rtc_rmk);
prmt.setString(4, "2 ");
prmt.setInt(5, app_no);
prmt1.setInt(1, app_no);
i = prmt.executeUpdate();
j = prmt1.executeUpdate();
if (i > 0) {
cnn.commit();
}
else {
cnn.rollback();
}
}
catch (java.sql.SQLException ex) {
lb_ok = false;
ex.printStackTrace();
}
finally {
prmt.close();
cnn.close();
}
return lb_ok;
}
=====================================
方法的功能明: q_app_register於q_test_register根app_no,要求
若sql行成功,sql,sql2的修改一起提交到(一事),否回,取消
sql,sql2的修改。即:如何把sql,sql2作一事理?
.......系出情:sql2修改成功了,sql有相修改。
[解决办法]
cnn = das.getConnection();
cnn.setAutoCommit(false);
...
finally {
prmt.close();
cnn.setAutoCommit(true);
cnn.close();
}
[解决办法]
你的描述应该有问题吧
从你的代码看sql在sql2之前执行 最多前者(sql)执行成功,后者执行(sql2)失败 不可能有相反的结果啊
在事务处理之前要设置connection的autoCommit为false
这个属性的默认值 不同的数据库可能有不同的定义