全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android批量插入数据到SQLite数据库的方法

Android中在sqlite插入数据的时候默认一条语句就是一个事务,因此如果存在上万条数据插入的话,那就需要执行上万次插入操作,操作速度可想而知。因此在Android中插入数据时,使用批量插入的方式可以大大提高插入速度。

有时需要把一些数据内置到应用中,常用的有以下几种方式:

1、使用db.execSQL(sql)

这里是把要插入的数据拼接成可执行的sql语句,然后调用db.execSQL(sql)方法执行插入。

public void inertOrUpdateDateBatch(List<String> sqls) { 
SQLiteDatabase db = getWritableDatabase(); 
db.beginTransaction(); 
try { 
for (String sql : sqls) { 
db.execSQL(sql); 
} 
// 设置事务标志为成功,当结束事务时就会提交事务 
db.setTransactionSuccessful(); 
} catch (Exception e) { 
e.printStackTrace(); 
} finally { 
// 结束事务 
db.endTransaction(); 
db.close(); 
} 
} 

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

这里是把要插入的数据封装到ContentValues类中,然后调用db.insert()方法执行插入。

db.beginTransaction(); // 手动设置开始事务 
for (ContentValues v : list) { 
db.insert("bus_line_station", null, v); 
} 
db.setTransactionSuccessful(); // 设置事务处理成功,不设置会自动回滚不提交 
db.endTransaction(); // 处理完成 
db.close() 

3、使用InsertHelper类

这个类在API 17中已经被废弃了

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时,官方文档提示改类已经废弃,请使用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(); 

第三种方法需要的时间最短,鉴于该类已经在API17中废弃,所以第四种方法应该是最优的方法。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android数据批量插入SQLite数据库  # Android数据批量插入SQLite  # Android数据批量插入数据库  # Android sqlite设置主键自增长的方法教程  # SQLite数据库中如何获取新插入数据的自增长ID  # 种方法  # 那就  # 要把  # 请使用  # 几种  # 时就  # 最短  # 可想而知  # 最优  # 可执行  # 大家多多  # 时需  # 类中  # 应该是  # 事务处理  # 文档  # beginTransaction  # table_name  # setTransactionSuccessful  # getWritableDatabase 


相关文章: 如何生成腾讯云建站专用兑换码?  建站与域名管理如何高效结合?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  ,sp开头的版面叫什么?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  建站之星上传入口如何快速找到?  详解ASP.NET 生成二维码实例(采用ThoughtWorks.QRCode和QrCode.Net两种方式)  建站之星Pro快速搭建教程:模板选择与功能配置指南  网站制作网站,深圳做网站哪家比较好?  公司网站建设制作费用,想建设一个属于自己的企业网站,该如何去做?  制作公司内部网站有哪些,内网如何建网站?  建站之星安装模板失败:服务器环境不兼容?  寿县云建站:智能SEO优化与多行业模板快速上线指南  枣阳网站制作,阳新火车站打的到仙岛湖多少钱?  盐城做公司网站,江苏电子版退休证办理流程?  Avalonia如何实现跨窗口通信 Avalonia窗口间数据传递  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐  青岛网站建设如何选择本地服务器?  如何配置IIS站点权限与局域网访问?  如何在阿里云通过域名搭建网站?  建站主机与服务器功能差异如何区分?  c# F# 的 MailboxProcessor 和 C# 的 Actor 模型  北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?  如何高效利用亚马逊云主机搭建企业网站?  公司网站制作价格怎么算,公司办个官网需要多少钱?  专业商城网站制作公司有哪些,pi商城官网是哪个?  如何快速生成专业多端适配建站电话?  建站之星客服服务时间及联系方式如何?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  建站之星代理费用多少?最新价格详情介绍  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  如何基于云服务器快速搭建网站及云盘系统?  如何访问已购建站主机并解决登录问题?  如何通过cPanel快速搭建网站?  成都网站制作价格表,现在成都广电的单独网络宽带有多少的,资费是什么情况呢?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  b2c电商网站制作流程,b2c水平综合的电商平台?  如何用已有域名快速搭建网站?  ,石家庄四十八中学官网?  实现虚拟支付需哪些建站技术支撑?  怎么用手机制作网站链接,dw怎么把手机适应页面变成网页?  小说建站VPS选用指南:性能对比、配置优化与建站方案解析  巅云智能建站系统:可视化拖拽+多端适配+免费模板一键生成  建站之星导航如何优化提升用户体验?  大学网站设计制作软件有哪些,如何将网站制作成自己app?  武汉网站制作费用多少,在武汉武昌,建面100平方左右的房子,想装暖气片,费用大概是多少啊?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何通过虚拟机搭建网站?详细步骤解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。