第一种方法 你可以通过调用存储过程,一次性执行这些sql语句第二种方法 调用Statement对象的addBatch方法 例如: stmt.addBatch("insert into A xxxxxxx"); stmt.addBatch("insert into B xxxxxxx"); stmt.addBatch("insert into C xxxxxxx"); 然后调用executeBach() int[] counts=stmt.executeBatch(); 最后编历数组counts,查看每个元素是否1 (每个counts数组元素对应上述三条执行语句影响纪录的条数,此例应为1) 如果有一个不为1的,你可以认为插入出错,调用connection对象的rollback()回滚 整个批处理修改具体的过程参考api document
例如: stmt.addBatch("insert into A xxxxxxx");
stmt.addBatch("insert into B xxxxxxx");
stmt.addBatch("insert into C xxxxxxx");
然后调用executeBach()
int[] counts=stmt.executeBatch();
最后编历数组counts,查看每个元素是否1
(每个counts数组元素对应上述三条执行语句影响纪录的条数,此例应为1)
如果有一个不为1的,你可以认为插入出错,调用connection对象的rollback()回滚
整个批处理修改具体的过程参考api document
你可以到SQL里去问问。
想不起来了。
但是我觉得楼主想得有点多了。
conn.setAutoCommit(false);
Statement stmt = conn.createStatement();
int nRow[] = null;
int nRow[0] = stmt.executeUpdate("insert into A xxxxxxx");
int nRow[1] = stmt.executeUpdate(("insert into B xxxxxxx");
.
.
.
for(int i=0;i<nRow.length;i++){
if(nRow[i]==0){
stmt.close();
conn.rollback();
}
}else{
stmt.close();
conn.commit();
}