最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫的方法

 更新時(shí)間:2017年03月30日 12:03:57   作者:chaoyu168  
這篇文章主要為大家詳細(xì)介紹了Android批量插入數(shù)據(jù)到SQLite數(shù)據(jù)庫的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

Android中在sqlite插入數(shù)據(jù)的時(shí)候默認(rèn)一條語句就是一個(gè)事務(wù),因此如果存在上萬條數(shù)據(jù)插入的話,那就需要執(zhí)行上萬次插入操作,操作速度可想而知。因此在Android中插入數(shù)據(jù)時(shí),使用批量插入的方式可以大大提高插入速度。

有時(shí)需要把一些數(shù)據(jù)內(nèi)置到應(yīng)用中,常用的有以下幾種方式:

1、使用db.execSQL(sql)

這里是把要插入的數(shù)據(jù)拼接成可執(zhí)行的sql語句,然后調(diào)用db.execSQL(sql)方法執(zhí)行插入。

public void inertOrUpdateDateBatch(List<String> sqls) { 
SQLiteDatabase db = getWritableDatabase(); 
db.beginTransaction(); 
try { 
for (String sql : sqls) { 
db.execSQL(sql); 
} 
// 設(shè)置事務(wù)標(biāo)志為成功,當(dāng)結(jié)束事務(wù)時(shí)就會(huì)提交事務(wù) 
db.setTransactionSuccessful(); 
} catch (Exception e) { 
e.printStackTrace(); 
} finally { 
// 結(jié)束事務(wù) 
db.endTransaction(); 
db.close(); 
} 
} 

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

這里是把要插入的數(shù)據(jù)封裝到ContentValues類中,然后調(diào)用db.insert()方法執(zhí)行插入。

db.beginTransaction(); // 手動(dòng)設(shè)置開始事務(wù) 
for (ContentValues v : list) { 
db.insert("bus_line_station", null, v); 
} 
db.setTransactionSuccessful(); // 設(shè)置事務(wù)處理成功,不設(shè)置會(huì)自動(dòng)回滾不提交 
db.endTransaction(); // 處理完成 
db.close() 

3、使用InsertHelper類

這個(gè)類在API 17中已經(jīng)被廢棄了

InsertHelper ih = new InsertHelper(db, "bus_line_station"); 
db.beginTransaction(); 
final int directColumnIndex = ih.getColumnIndex("direct"); 
final int lineNameColumnIndex = ih.getColumnIndex("line_name"); 
final int snoColumnIndex = ih.getColumnIndex("sno"); 
final int stationNameColumnIndex = ih.getColumnIndex("station_name"); 
try { 
for (Station s : busLines) { 
ih.prepareForInsert(); 
ih.bind(directColumnIndex, s.direct); 
ih.bind(lineNameColumnIndex, s.lineName); 
ih.bind(snoColumnIndex, s.sno); 
ih.bind(stationNameColumnIndex, s.stationName); 
ih.execute(); 
} 
db.setTransactionSuccessful(); 
} finally { 
ih.close(); 
db.endTransaction(); 
db.close(); 
} 

4、使用SQLiteStatement

查看InsertHelper時(shí),官方文檔提示改類已經(jīng)廢棄,請使用SQLiteStatement

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) { 
stat.bindLong(1, line.direct); 
stat.bindString(2, line.lineName); 
stat.bindLong(3, line.sno); 
stat.bindString(4, line.stationName); 
stat.executeInsert(); 
} 
db.setTransactionSuccessful(); 
db.endTransaction(); 
db.close(); 

第三種方法需要的時(shí)間最短,鑒于該類已經(jīng)在API17中廢棄,所以第四種方法應(yīng)該是最優(yōu)的方法。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android開發(fā)常用經(jīng)典代碼段集錦

    Android開發(fā)常用經(jīng)典代碼段集錦

    這篇文章主要介紹了Android開發(fā)常用經(jīng)典代碼段,涉及Android開發(fā)過程中針對手機(jī)、聯(lián)系人、圖片、存儲(chǔ)卡等的相關(guān)操作技巧,非常簡單實(shí)用,需要的朋友可以參考下
    2016-02-02
  • Android本地搜索業(yè)務(wù)優(yōu)化方案

    Android本地搜索業(yè)務(wù)優(yōu)化方案

    這篇文章主要為大家介紹了Android本地搜索業(yè)務(wù)優(yōu)化方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法

    androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法

    這篇文章主要介紹了androidstudio3.0使用butterknife報(bào)錯(cuò)解決的解決方法,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2018-01-01
  • Android AOP注解Annotation詳解(一)

    Android AOP注解Annotation詳解(一)

    這篇文章主要介紹了Android AOP注解Annotation詳細(xì)介紹的相關(guān)資料,Annotation是代碼里的特殊標(biāo)記,這些標(biāo)記可以在編譯、類加載、運(yùn)行時(shí)被讀取,并執(zhí)行相應(yīng)的處理,需要的朋友可以參考下
    2017-03-03
  • Android之AnimationDrawable簡單模擬動(dòng)態(tài)圖

    Android之AnimationDrawable簡單模擬動(dòng)態(tài)圖

    這篇文章主要為大家詳細(xì)介紹了Android之AnimationDrawable簡單模擬動(dòng)態(tài)圖的實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • android表格效果之ListView隔行變色實(shí)現(xiàn)代碼

    android表格效果之ListView隔行變色實(shí)現(xiàn)代碼

    首先繼承SimpleAdapter再使用重載的Adapter來達(dá)到效果,其實(shí)主要是需要重載SimpleAdapter,感興趣的朋友可以研究下,希望本文可以幫助到你
    2013-02-02
  • Kotlin面向?qū)ο笾R點(diǎn)講解

    Kotlin面向?qū)ο笾R點(diǎn)講解

    面向?qū)ο缶幊掏ㄟ^對事物的抽象,大大的簡化了程序的開發(fā)難度。我們常用的編程語言:Java、C++、Python都屬于面向?qū)ο缶幊?。Kotlin與java類似,也是一種面向?qū)ο缶幊陶Z言。本文從面向?qū)ο笕齻€(gè)基本特征:封裝、繼承、多態(tài),來闡述一下Kotlin中的面向?qū)ο缶幊?/div> 2022-12-12
  • Android?手寫熱修復(fù)dex實(shí)例詳解

    Android?手寫熱修復(fù)dex實(shí)例詳解

    這篇文章主要為大家介紹了Android?手寫熱修復(fù)dex實(shí)現(xiàn)示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Android 馬賽克(Mosaics)效果

    Android 馬賽克(Mosaics)效果

    這篇文章主要為大家介紹了Android 馬賽克(Mosaics)效果,馬賽克(Mosaics)效果應(yīng)用非常廣泛,想要學(xué)習(xí)的不要錯(cuò)過本文,可以借鑒參考一下
    2016-01-01
  • 探討Android與iOS,我們將何去何從?

    探討Android與iOS,我們將何去何從?

    本篇文章是對Android與iOS進(jìn)行了詳細(xì)的分析與探討,需要的朋友參考下
    2013-05-05

最新評論

万源市| 修武县| 九龙坡区| 蓬莱市| 松潘县| 黄平县| 合川市| 孝感市| 岑巩县| 麻城市| 平阴县| 铜山县| 温泉县| 盐津县| 辰溪县| 无锡市| 布尔津县| 轮台县| 巴楚县| 昭觉县| 宜春市| 锡林郭勒盟| 家居| 车险| 翁源县| 神池县| 乐昌市| 阳高县| 金堂县| 达拉特旗| 法库县| 墨玉县| 开阳县| 望都县| 双流县| 南开区| 噶尔县| 大同市| 麻城市| 建水县| 云林县|