Android SQLite大資料儲存優化

2021-09-27 06:12:23 字數 1405 閱讀 5523

我們都知道sqlite是乙個輕量級的資料庫,在批量儲存大資料的時候很受效能的限制。而在android開發中如果儲存資料的效率過慢的話,就會造成程式執行的卡頓,使用者體驗會很不好。我們都說資料庫儲存的時候要通過開啟事務來進行儲存,這樣能提高儲存的效率,但我們也得知道的是頻繁的開關事務是最消耗效能的,所有我這裡優化的原則是-減少事務的開啟與關閉。

首先,我們來看看我優化前的**

儲存公司資訊到資料庫,從**裡面初步的看沒有任何問題,執行也沒有出現任何問題,但當專案中的資料達到上萬後問題就暴露出來了。由於需要把上萬個公司存到資料庫,優化前的做法就是遍歷list,然後呼叫addbathcompanydata去儲存,而此時程式出現了明顯的卡死,通過跟蹤發現此處上萬條資料全部執行完成需要恐怖的四十多秒,你沒有看錯,就是四十多秒,這個問題可想而知。

public

boolean

addbathcompanydata

(chatcompany chatcompany)

; mdb.

execsql

(sql, objects)

; mdb.

settransactionsuccessful()

;}catch

(exception e)

finally

}return

true

;}

然後,我們來看看優化後的**

我們對比優化前後的**,其實的沒有別的變化,只不過是把迴圈遍歷list放到了addbathcompanydata方法裡面,而把事務的開啟mdb.begintransaction();放到了迴圈之外,這樣即使儲存上萬條資料,事務也只會開啟和關閉一次。當然效果也是顯著的,優化後的執行時間只需要0.2秒的時間。相信這個速度暫時肯定是夠用了。

public

boolean

addbathcompanydata

(list

chatcompanys)

final string sql =

"insert into company values(null,?,?,?,?,?,?)"

; object[

] objects =

newobject

; mdb.

execsql

(sql, objects);}

mdb.

settransactionsuccessful()

;}catch

(exception e)

finally

}return

true

;}

ps:發布應用中的實際應用,真實有效

android SQLite大資料插入優化

sqlitedatabase db this.getwritabledatabase 獲取資料庫可寫物件 db.begintransaction 啟動事務 try 以上資料操作全部成功,通過標記settransactionsuccessful為true,事務才提交,否則回滾 預設標記為false d...

android sqlite基本操作

package com.xiangqiao.sqlite3 import android.content.contentvalues import android.database.cursor import android.database.sqlite.sqlitedatabase import...

關於Android SQLite詳細

一 sqlite簡介 在android平台上,整合了乙個嵌入式關係型資料庫 sqlite,sqlite3支援 null integer real 浮點數字 text 字串文字 和blob 二進位制物件 資料型別,雖然它支援的型別雖然只有五種,但實際上sqlite3也接受varchar n char ...