一、安卓下的事務
事務一般用於這樣一種狀況:a和b分別在銀行乙個自己的賬戶,有一天a要給b匯1000塊,那麼對應於sql的操作語句也就是:
update account set money=money-1000 where name = 'a';
update account set money=money+1000 where name='b;
如果正常情況下,當然是沒有問題的,但是問題如果a給b匯款完,在b還沒有收到款項時,atm機掛掉了怎麼辦,這時a的賬戶少了1000,而b的賬戶還沒有收到這1000塊,那麼著1000塊就蒸發掉了?那麼這裡就需要事務機制來解決,保證這兩句要麼同時執行,要麼同時不執行。a
android中的事務操作是比較簡單的,主要分為三根步驟:
1.設定事務的起始:(假設db是sqlitedatebase物件)
db.begintransaction();
2.設定事務的成功標記點
db.settransactionsuccessful();
3.設定事務的結束,這個一般放在finally塊中執行
finally
機制是:如果事務正常的執行到了成功標記點,那麼表示正常,如果事務沒有執行到成功標記點就結束了,那麼將執行執行的操作都回滾到事務起始的狀態
**如下:
public void testtransaction() catch (sqlexception e) finally
db.close();
} }
二、事務的一些用法
事務機制可以優化資料庫的效能,大約能提公升10倍的樣子,比如說要執行10000條資料庫插入操作,如果單一的寫的話,每一條插入執行都需要開啟和關閉資料庫連線一次,這種物理上的操作是非常耗時的,大量的時間都被浪費在開啟和關閉上了,但是如果用事務將這10000條操作包含起來,那麼這一萬條操作成功執行指揮開啟和關閉一次資料庫,這就節省了大量的時間。
這裡給出兩個例子:
使用事務之前的耗時的例子:
public void testtransactioninsert()
// 3.記錄結束時間
long end = system.currenttimemillis();
long diff = end - start;
system.out.println("使用事務之前耗時:" + diff + "毫秒");
db.close();
} }
耗時:09-02 03:00:12.267: i/system.out(373): 使用事務之前耗時:13576毫秒,13.5秒的樣子
使用事務之後的耗時的例子:
public void testtransactioninsert()
db.settransactionsuccessful();// 設定成功記錄節點
// 3.記錄結束時間
long end = system.currenttimemillis();
long diff = end - start;
system.out.println("使用事務之前耗時:" + diff + "毫秒");
} catch (sqlexception e) finally
db.close();
} }
耗時:09-02 03:03:33.900: i/system.out(2113): 使用事務之前耗時:2648毫秒,2.6秒的樣子
C 複習 練習 1
上週做多 技術的作業,jpeg編碼問題 fdct 量化 逆量化和idct,只是簡單套公式,但還是感覺自己c 好渣。太久沒做,手生了,可怕可怕。所以複習了下檔案操作和。基礎操作。這裡貼一些當時被坑到的地方 1.檔案操作 include ifstream infile e desktop sourced...
day07 複習練習
考試資訊 ipaddr 172.25.254.x x 在這裡指您的工作站編號 netmask 255.255.255.0 gateway 172.25.254.250 dns 172.25.254.250 yum 源位址為 本機 ipaddr 172.25.254.42 1.在進行考試之前,請先重置...
程式設計師簡歷 整理複習練習 第三彈之 現場面試 篇
前言 上兩期我們講了如何去寫好乙份讓hr和技術面試官眼前一亮的簡歷的,但是這只是乙個敲門磚,下面我帶大家去看看面試官如何選拔求職者的。正文 乙個優秀的面試官會從以下幾個方面去了解求職者的能力 技術的專業能力 溝通能力 學習能力 團隊協作 應變能力 很多面試在一開始我們經常會接到 面試的邀請,主要和求...