我正在用Java 8編寫一個事務。首先,我的代碼是這樣的。在Java 8中回滾()語句執行失敗的最佳方式是什麼?
try (Connection conn = DAOUtil.getConnection();
PreparedStatement ps = conn.prepareStatement(addSubscriptionSql)) {
conn.setAutoCommit(false);
//do work
conn.commit();
} catch (SQLException e) {
e.printStackTrace(); //handle error
}
但由於我應該在事務失敗的情況下回滾,所以我必須像這樣更改代碼。請注意兩個try
塊。
try (Connection conn = DAOUtil.getConnection()) {
try (PreparedStatement ps = conn.prepareStatement(addSubscriptionSql)) {
conn.setAutoCommit(false);
//do work
conn.commit();
} catch (SQLException e) {
conn.rollback();
e.printStackTrace(); //handle error
}
} catch (SQLException e) {
e.printStackTrace(); //handle error
}
我的問題是,有沒有更好的(我的意思是更簡單)的方式呢?我可以通過一個try塊來實現嗎?
聰明!感謝分享。 –
這是一個聰明的解決方案,所以+1,但我想知道有多少人會在代碼庫中遇到這個問題。 –