Android複習練習十 SQLite的事務機制

2021-06-25 09:18:04 字數 1798 閱讀 4259

一、安卓下的事務

事務一般用於這樣一種狀況: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和技術面試官眼前一亮的簡歷的,但是這只是乙個敲門磚,下面我帶大家去看看面試官如何選拔求職者的。正文 乙個優秀的面試官會從以下幾個方面去了解求職者的能力 技術的專業能力 溝通能力 學習能力 團隊協作 應變能力 很多面試在一開始我們經常會接到 面試的邀請,主要和求...