使用java进行Postgresql事务处理

Postgresql transaction handling with java

我有两个使用preparedStatement的查询块。

这是第一个:

1
2
3
4
5
6
String sql ="update cikan_malzeme set miktar = ? where proje_id = ? and malzeme_id = ?";
PreparedStatement prep = dbConnect.connection.prepareStatement(sql);
prep.setFloat(1, toplam);
prep.setInt(2, pid);
prep.setInt(3, mid);
prep.executeUpdate();

这是第二个:

1
2
3
4
5
String sql2 ="update malzemeler set miktar = ? where malz_adi = ?";
PreparedStatement prep2 = dbConnect.connection.prepareStatement(sql2);
prep2.setFloat(1, fark);
prep2.setString(2, malzemeadi);
prep2.executeUpdate();

现在我想用事务BEGIN执行它们; 和COMMIT;
如何使用preparedStatement处理事务?

提前致谢。


将自动提交设置为false。

将PreparedStatements放在try块中。 最后提交; 在catch块中回滚。

这就是它通常在裸机JDBC中完成的方式。

http://docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html

如果使用EJB3或Spring,则可以添加事务管理器并以声明方式指定它们。 这更加复杂和灵活。


您应该使用Connection.setAutoCommit(false)来禁用自动提交以及Connection.commit()Connection.rollback()

禁用自动提交时,首次执行需要事务的命令或查询时,将自动启动事务。

您不应该使用特定于数据库的事务控制命令(因为在发出commit()或rollback()时,驱动程序很可能会执行额外的资源清理。