日本搞逼视频_黄色一级片免费在线观看_色99久久_性明星video另类hd_欧美77_综合在线视频

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > php開源 > php教程 > JDBC的進化3--補充:事務處理

JDBC的進化3--補充:事務處理

來源:程序員人生   發布時間:2015-03-12 08:34:53 閱讀次數:3733次

接著JDBC的進化3,我們來講數據庫事務。
事務:1組邏輯操作單元,使數據從1種狀態變換到另外一種狀態。
怎樣理解呢?
1組邏輯單元:我認為指的是多條的DML操作,只是1條DML語句的話,對mysql來講,履行完成功就自動提交了,沒成功的話,就沒成功嘍,這樣說來,1條DML語句就相當于1個原子,不可再分了。
從1種狀態變換到另外一種狀態:即這組操作是成功了還是失敗了,他們必須同時都成功,有1個失敗,就退回到出發點。例如銀行的轉賬,不能1個成功,1個失敗吧。
來看看JDBC的事務處理:
先來看看,在甚么時候,事務處理睬開始,甚么時候結束,針對確當然是我們的程序!
事務處理的開始:
以第1個DML語句履行為開始
事務處理的結束:
1.提交或回滾
2.正常結束
3.程序異常
來1個正確的例子:

@Test public void test() { String sql1 = "UPDATE user_table SET balance = balance - 100 WHERE `user` = ?"; String sql2 = "UPDATE user_table SET balance = balance + 100 WHERE `user` = ?"; Object[] obj1 = new Object[1]; obj1[0] = new String("AA"); Object[] obj2 = new Object[1]; obj2[0] = new String("BB"); Connection conn = null; try { conn = JDBCUtils.getConnection(); conn.setAutoCommit(false); prepareUpdate(conn, sql1, obj1); prepareUpdate(conn, sql2, obj2); conn.commit(); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.close(null, null, conn); } } public int prepareUpdate(Connection conn, String sql, Object... args) { // get preparedStatement's object PreparedStatement ps = null; // execute the ps int rows = 0; try { conn = JDBCUtils.getConnection(); ps = conn.prepareStatement(sql); for (int i = 0; i < args.length; i++) { ps.setObject(i + 1, args[i]); } rows = ps.executeUpdate(); } catch (Exception e) { e.printStackTrace(); } finally { JDBCUtils.close(ps, null); } // return return rows; }

這就是1個正確的事務處理,保證了兩個更新都成功,不會由于斷開連接或是異常的出現而使數據更新出錯。

要測試的話,在兩個update中間加上異常就能夠了。需要注意的是,不能自定義異常,假設自定義異常,下面的代碼就永久運行不到,回報編譯毛病。(自定義異常相當于return語句)

補充1點:
事務的ACID(acid)屬性
1.原子性
2.1致性
3.隔離性
4.持久性

事務的隔離級別:
產生的問題:
1.臟讀
2.不可重復讀
3.幻讀

隔離級別:
這里寫圖片描述
Oracle 支持的 2 種事務隔離級別:READ COMMITED, SERIALIZABLE。 Oracle 默許的事務隔離級別為: READ COMMITED
Mysql 支持 4 種事務隔離級別. Mysql 默許的事務隔離級別為: REPEATABLE READ

查看和設置事務級別:
查看當前的隔離級別: SELECT @@tx_isolation;
設置當前 mySQL 連接的隔離級別:
set transaction isolation level read committed;
設置數據庫系統的全局的隔離級別:
set global transaction isolation level read committed;

好了,over。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 久久国产精品毛片 | 婷婷六月丁 | 亚洲一区二区三区免费在线观看 | 色射色| 玖玖久久| 91丨九色丨国产在线 | 欧美成人免费一级人片100 | 亚洲国产成人精品久久久国产成人 | 男女上床网站 | 偷拍第一页 | 欧美精品在线免费观看 | 福利电影在线观看 | 黄色成人在线视频 | 岛国av大片| 性爱免费视频 | 国产一区二区三区视频播放 | 污视频网站在线免费观看 | 中文在线www | 欧美日韩福利视频 | 婷婷激情综合 | 麻豆b2b| 成人av免费在线观看 | 91视视频在线观看入口直接观看 | 三级av毛片 | 欧美日本精品 | 欧美精品国产一区二区 | 黄色在线观看 | av伊人网 | 99热| 日产精品久久久 | 国产精品久久久av | 欧美日韩亚 | 91精品国产自产91精品 | 亚洲免费视频一区二区 | 日韩福利一区 | 国产免费一区二区 | 国产一区二区三区在线观看免费 | 91天堂在线| 亚洲国产精品网站 | jizzjizzjizz亚洲女 | 91精品一区二区三区久久久久 |