我今天用JDBC批处理的时候发现一个很奇怪的问题,求同学们帮我解答解答用PreparedStatement 处理批量的不同的sql 语句时,
stmt = con.prepareStatement("Delete From test Where name like ?");
stmt.setString(1, "li");
这上面的2个没有返回,只有下面的addBatch()这个方法才可以得到返回的结果。
public static int[] testDelBitch(){
int [] isOK = null; //批处理返回的是一个int类型的数组
Connection con = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
con =getConnection();
con.setAutoCommit(false); //设置为手动提交
stmt = con.prepareStatement("Delete From test Where name like ?");
stmt.setString(1, "li");
//添加2个批处理删除sql
stmt.addBatch("Delete From test2 Where name='liyi'");
stmt.addBatch("Delete From test Where name='liyi'");
isOK = stmt.executeBatch();
con.commit(); //提交
} catch (SQLException e) {
try {
con.rollback(); //如果发生异常,全部回滚
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
} finally {
try {
DButil.close(rs, stmt, con);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return isOK;
}
返回打印的结果只有2个 应该是有3个的,但是却只有2个成功返回了,但问题是既然还没有报错,百思不得其解,求大神帮助
|