在一个事务中执行两个不同的查询

Noa*_*Gal 9 java jdbc prepared-statement

我试图在一个执行中执行两个插入查询Statement,将它们放在一个事务中.

我正在查看该addBatch方法,但如果我理解正确,它可以与单个PreparedStatement一起使用,使用不同的参数多次执行相同的插入,或者在Statement对象上使用以向批处理添加更多查询,但无法添加参数(所以我可能能够在sql字符串中添加值.SQL注入风格).

我也试过一种简单的方法,在一个sql语句(insert into table1 values(?, ?); insert into table2 values(?, ?);)中编写两个插入,但是这样PreparedStatement只能看到前两个参数,并尝试设置第三个和第四个抛出异常.

axt*_*avt 24

您可以禁用自动提交,执行两个单独的语句,然后手动提交事务:

connection.setAutoCommit(false);
try {
    ...
    stmt1.execute();
    ...
    stmt2.execute();
    connection.commit();
} catch (Exception ex) {
    connection.rollback();
}
Run Code Online (Sandbox Code Playgroud)