是否有可能以某種方式混合PreparedStatement批處理和Statement批處理,並保持雙方在單個事務中執行的好處?將PreparedStatement批處理與Statement批處理混合在一起,有可能嗎?
我有什麼是我自己的數據訪問對象,它代表事務。我想用這樣的:
/* here transaction starts: object receive connection, etc. */
MyTableTransactionObject myTable = new MyTableTransactionObject();
myTable.clear();
myTable.insert(Row1);
myTable.insert(Row2);
myTable.insert(Row3);
myTable.doSomethingElse();
myTable.insert(Row4);
/* here transaction ends, batches are executed changes are commited,
statements are closed */
myTable.execute();
myTable.close();
「引擎蓋下」 MyTableTransactionObject的有using語句或預處理語句(可能有多個預處理語句)的方法。例如:在clear()
方法我想用statement.addBatch("DELETE FROM table;")
,在insert(...)
方法我想用特殊的PreparedStatement執行SQL INSERT
操作,在doSomethingElse(...)
我想用不同的PreparedStatement做別的事情,等
我怎樣才能實現執行這些陳述爲了他們被稱爲myTable.execute()
?
如果你使用MySQL,請確保您能夠在驅動程序級別rewriteBatchedStatements該解決方案使用自動提交(真實):http://dev.mysql.com/doc/refman/5.5/en /connector-j-reference-configuration-properties.html – 2012-04-26 03:13:13