多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內(nèi)最全IT社區(qū)平臺 聯(lián)系我們 | 收藏本站
阿里云優(yōu)惠2
您當前位置:首頁 > php開源 > php教程 > JDBC的進化3--補充:事務(wù)處理

JDBC的進化3--補充:事務(wù)處理

來源:程序員人生   發(fā)布時間:2015-03-12 08:34:53 閱讀次數(shù):3725次

接著JDBC的進化3,我們來講數(shù)據(jù)庫事務(wù)。
事務(wù):1組邏輯操作單元,使數(shù)據(jù)從1種狀態(tài)變換到另外一種狀態(tài)。
怎樣理解呢?
1組邏輯單元:我認為指的是多條的DML操作,只是1條DML語句的話,對mysql來講,履行完成功就自動提交了,沒成功的話,就沒成功嘍,這樣說來,1條DML語句就相當于1個原子,不可再分了。
從1種狀態(tài)變換到另外一種狀態(tài):即這組操作是成功了還是失敗了,他們必須同時都成功,有1個失敗,就退回到出發(fā)點。例如銀行的轉(zhuǎn)賬,不能1個成功,1個失敗吧。
來看看JDBC的事務(wù)處理:
先來看看,在甚么時候,事務(wù)處理睬開始,甚么時候結(jié)束,針對確當然是我們的程序!
事務(wù)處理的開始:
以第1個DML語句履行為開始
事務(wù)處理的結(jié)束:
1.提交或回滾
2.正常結(jié)束
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個正確的事務(wù)處理,保證了兩個更新都成功,不會由于斷開連接或是異常的出現(xiàn)而使數(shù)據(jù)更新出錯。

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

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

事務(wù)的隔離級別:
產(chǎn)生的問題:
1.臟讀
2.不可重復讀
3.幻讀

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

查看和設(shè)置事務(wù)級別:
查看當前的隔離級別: SELECT @@tx_isolation;
設(shè)置當前 mySQL 連接的隔離級別:
set transaction isolation level read committed;
設(shè)置數(shù)據(jù)庫系統(tǒng)的全局的隔離級別:
set global transaction isolation level read committed;

好了,over。

生活不易,碼農(nóng)辛苦
如果您覺得本網(wǎng)站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關(guān)閉
程序員人生
主站蜘蛛池模板: 交在线观看网站视频 | 成年人在线观看视频网站 | 俺也来俺也去俺也射 | 91精品一区二区三区久久久久 | 久久99精品久久久久久国产越南 | 一级特黄特色aa大片 | 精品国免费一区二区三区 | 欧美一区高清 | 成人性色生活片免费看爆迷你毛片 | 精品国产三级v | 国产福利影院 | 国产一区二区三区精品久久呦 | 国产精品久久久久久久久夜色 | 午夜影院免费看 | 国产精品久久久久久久久久免费 | 中文字幕乱码中文乱码综合 | 久久天天躁狠狠躁夜夜不卡 | 午夜欧美精品久久久久久久久 | 久久久久夜 | 大学生一级一片第一次免费 | japanese日本护士com | 亚洲高清在线视频 | 亚洲综合日韩精品欧美综合区 | 精品一区国产 | 成人久久久精品乱码一区二区三区 | 一级做α爱过程免费视频 | 亚洲国产日韩欧美综合久久 | аbt天堂资源在线官网 | 亚洲国产精久久久久久久春色 | 图片区小说区校园小说 | 精品欧美激情在线看 | 最近2019中文字幕免费大全5 | 亚洲精品专区一区二区欧美 | 亚洲精品a | 日本在线不卡视频 | 日本特级全黄一级毛片 | 性欧美黑人xxxx | 国产一区二区三区精品久久呦 | 一区二区三区四区五区 | 国产一区二区久久久 | 视频www |