關於sqlite事務可以解決一些問題,比如你要插入兩個資料,可以將兩個資料作為同乙個事務進行插入,這樣如果第二個資料錯誤了,便自動執行回滾操作,第乙個資料也不會插入成功,保證了資料的同步!
一、實際的例子
應用程式初始化時需要批量的向sqlite中插入大量資料,單獨的使用for+insert方法導致應用響應緩慢,因為 sqlite插入資料的時候預設一條語句就是乙個事務,有多少條資料就有多少次磁碟操作。我的應用初始5000條記錄也就是要5000次讀寫磁碟操作。
而且不能保證所有資料都能同時插入。(有可能部分插入成功,另外一部分失敗,後續還得刪除。太麻煩)
二、解決方法
新增事務處理,把5000條插入作為乙個事務
我們使用sqlite的事務進行控制:
db.begintransaction(); //手動設定開始事務
trydb.settransactionsuccessful();//設定事務處理成功,不設定會自動回滾不提交
}catch(exception e)finally
說明:
使用sqlitedatabase的begintransaction()方法可以開啟乙個事務,程式執行到
endtransaction() 方法時會檢查事務的標誌是否為成功,如果程式執行到
endtransaction()之前呼叫了settransactionsuccessful() 方法設定事務的標誌為成功則提
交事務,如果沒有呼叫settransactionsuccessful() 方法則回滾事務。
SQLite事務操作
sqlite引入事物,用來併發sql語句的執行。事務是針對資料庫的一組操作,它可以由一條或多條sql語句組成,同乙個事務的操作具備同步的特點,如果有一條語句無法執行,那麼所有語句都不會執行。也就是說,事務中的語句要麼都執行,要麼都不執行。以下示例 中,通過sqlite的事務來模擬銀行轉賬功能。首先要...
SQLite事務的實現
使用sqlitedatabase的begintransaction 方法可以開啟乙個事務,程式執行到endtransaction 方法時會檢查事務的標誌是否為成功,如果程式執行到endtransaction 之前呼叫了settransactionsuccessful 方法設定事務的標誌為成功則提交事...
sqlite中對日期的操作
在android中使用sqlite時,日期處理比較特殊,網上找了很多種方法,試驗出一種相對來說比較合適的 把日期型別作為integer建表,在插入資料庫時,用new date gettime 存入,取出時,再轉為date型別date date new date cursor.getlong i 取某...