2014-03-02 64 views
0

我使用Apache BasicDataSource來處理我的數據庫代碼 - 只需創建方法來執行訪問數據庫的特定任務。一個例子可以在下面看到;使用BasicDataSource的MYSQL事務

/** 
* Update a users display name 
* @param userid the user id to update for 
* @param displayName the display name to change too 
* @return true if update suceeded 
*/ 
public static boolean updateDisplayName(String userid, String displayName){ 
    Connection conn = null; 
    String sql = "update UserAccount set displayname = ? where userid = ? "; 

    try { 
     conn = source.getConnection(); 
     PreparedStatement st = conn.prepareStatement(sql); 
     st.setString(1,displayName); 
     st.setString(2,userid); 
     st.executeUpdate(); 
     return true; 
    } catch (Exception e) { 
     logger.warn("An error occured when updating the display name for " + userid, e); 
    } finally{ 
     closeConnection(conn); 
    } 
    return false; 
} 

我有一個谷歌周圍,似乎無法找到任何如何使用交易的例子。請有人建議我如何做到這一點?

感謝

+0

但是,爲什麼你會在這個特殊的代碼需要一個交易?這只是一個'UPDATE' .. – qqilihq

+0

只是說一般情況下,我應該粘貼一個更好的例子,但只是想說明我目前如何做事 – Biscuit128

回答

0

當你把連接標記這個連接,自動提交虛假

connection.setAutoCommit(false); 

一旦你succesfuly完成你的任務,提交該交易

connection.commit(); 

異常回滾的情況下交易

connection.rollback(); 

這是正常的JDBC事務,你可以與其他實施交易,以及 去..檢查這個例子here