Android批量插入資料到SQLite資料庫

2021-06-18 20:00:59 字數 2315 閱讀 6771

在開發android應用時,有時需要把一些資料內建到應用中,常用的有以下2種方式:其一直接拷貝製作好的sqlite資料庫檔案,其二是使用系統提供的資料庫,然後把資料批量插入。我更傾向於使用第二種方式:使用系統建立的資料庫,然後批量插入資料。批量插入資料也有很多方法,那麼那種方法更快呢,下面通過乙個demo比較一下各個方法的插入速度。

1. 使用db.execsql(sql)

這裡是把要插入的資料拼接成可執行的sql語句,然後呼叫db.execsql(sql)方法執行插入

參考部落格:

1

2 34 5

6 78 9

1011

1213

1415

1617

public

void

inertorupdatedatebatch

(list

<

string

>

sqls

)// 設定事務標誌為成功,當結束事務時就會提交事務 db.

settransactionsuccessful

();}

catch

(exceptione)

finally

}

2. 使用db.insert("table_name", null, contentvalues)

123

4567

8

db

.begintransaction

();// 手動設定開始事務

for(

contentvaluesv:

list)db

.settransactionsuccessful

();// 設定事務處理成功,不設定會自動回滾不提交db.

endtransaction

();// 處理完成db.

close

();

3. 使用inserthelper類

這個類在api 17中已經被廢棄了,參考部落格:

1

2 34 5

6 78 9

1011

1213

1415

1617

1819

2021

inserthelperih=

newinserthelper(db

,"bus_line_station"

);db

.begintransaction

();final

intdirectcolumnindex=ih

.getcolumnindex

("direct"

);final

intlinenamecolumnindex=ih

.getcolumnindex

("line_name"

);final

intsnocolumnindex=ih

.getcolumnindex

("sno"

);final

intstationnamecolumnindex=ih

.getcolumnindex

("station_name"

);trydb.

settransactionsuccessful

();}

finally

4. 使用sqlitestatement

1

2 34 5

6 78 9

1011

1213

string

sql=

"insert into bus_line_station(direct,line_name,sno,station_name) values(?,?,?,?)"

;sqlitestatement

stat=db

.compilestatement

(sql

);db

.begintransaction

();for

(station

line

:buslines)db

.settransactionsuccessful

();db

.endtransaction

();db

.close

();

下圖是以上4中方法在批量插入1萬條資料消耗的時間

可以發現第三種方法需要的時間最短,鑑於該類已經在api17中廢棄,所以第四種方法應該是最優的方法。

Android批量插入資料到SQLite資料庫

android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sq...

Android 批量插入資料到SQLite資料庫

android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sq...

Android批量插入資料到SQLite資料庫

android中在sqlite插入資料的時候預設一條語句就是乙個事務,因此如果存在上萬條資料插入的話,那就需要執行上萬次插入操作,操作速度可想而知。因此在android中插入資料時,使用批量插入的方式可以大大提高插入速度。有時需要把一些資料內建到應用中,常用的有以下2種方式 其一直接拷貝製作好的sq...