【发布时间】:2014-05-27 19:01:51
【问题描述】:
我正在使用 JDBC 在 JAVA 中编写客户端。我想执行这样的语句
resultSet = statement.executeQuery("BEGIN; Delete from Table id=1 Delete from table2 id=1 COMMIT;");
显然上述语句不起作用。那么我可以按照以下方式进行吗?相反,我在这个例子中使用了 Insert。
con.setAutoComitt(false);
String qry1 = "..."
pst1 = con.prepareStatement(qry1)
//Insert code here to add values to prepared statement pst1
pst1.executequery();
String qry2 = "..."
pst2 = con.prepareStatement(qry2)
//Insert code here to add values to prepared statement pst2
pst2.executequery();
con.comitt();
这是正确的吗?任何帮助或文档都会很棒。我什么也找不到。
【问题讨论】:
-
是的,你就是这么干的。 docs.oracle.com/javase/tutorial/jdbc/basics/transactions.html 之后重新打开自动提交可能是个好主意,这样您以后就不会破坏某些东西。
-
所以一旦我提交了查询语句就会被执行?
-
好的,我明白了,谢谢你的链接,这很棒。
-
不。查询被执行,然后当您提交时,它们被提交。您可能想在数据库文档中查找事务是如何工作的。
-
如果你想执行单个语句然后提交,那么你可以只启用自动提交:在语句结束后自动完成提交(例如
DELETE立即,SELECT之后读取结果集)。只有当您需要在多个语句上进行事务时(或者如果您想从单个连接同时使用多个语句),您才需要禁用自动提交。
标签: java postgresql jdbc transactions