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

发布时间 - 2026-01-11 00:26:56    点击率:

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 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在腾讯云服务器快速搭建个人网站?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  Laravel如何使用Socialite实现第三方登录?(微信/GitHub示例)  如何快速搭建高效WAP手机网站?  香港服务器网站卡顿?如何解决网络延迟与负载问题?  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  Laravel Debugbar怎么安装_Laravel调试工具栏配置指南  如何在云虚拟主机上快速搭建个人网站?  Python高阶函数应用_函数作为参数说明【指导】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  用yum安装MySQLdb模块的步骤方法  在线制作视频的网站有哪些,电脑如何制作视频短片?  详解jQuery停止动画——stop()方法的使用  JavaScript常见的五种数组去重的方式  laravel怎么通过契约(Contracts)编程_laravel契约(Contracts)编程方法  网页设计与网站制作内容,怎样注册网站?  JS实现鼠标移上去显示图片或微信二维码  网站制作软件有哪些,制图软件有哪些?  佛山网站制作系统,佛山企业变更地址网上办理步骤?  装修招标网站设计制作流程,装修招标流程?  Laravel如何操作JSON类型的数据库字段?(Eloquent示例)  Laravel中的withCount方法怎么高效统计关联模型数量  高防服务器租用首荐平台,企业级优惠套餐快速部署  JS中对数组元素进行增删改移的方法总结  如何撰写建站申请书?关键要点有哪些?  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  香港网站服务器数量如何影响SEO优化效果?  香港服务器租用费用高吗?如何避免常见误区?  如何在Tomcat中配置并部署网站项目?  Laravel如何处理文件上传_Laravel Storage门面实现文件存储与管理  Laravel如何安装使用Debugbar工具栏_Laravel性能调试与SQL监控插件【步骤】  HTML5空格和margin有啥区别_空格与外边距的使用场景【说明】  简历在线制作网站免费版,如何创建个人简历?  Laravel Asset编译怎么配置_Laravel Vite前端构建工具使用  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  JavaScript如何实现类型判断_typeof和instanceof有什么区别  Win11怎么关闭资讯和兴趣_Windows11任务栏设置隐藏小组件  Laravel事件监听器怎么写_Laravel Event和Listener使用教程  Windows Hello人脸识别突然无法使用  如何正确下载安装西数主机建站助手?  如何快速生成橙子建站落地页链接?  jQuery 常见小例汇总  iOS验证手机号的正则表达式  进行网站优化必须要坚持的四大原则  标准网站视频模板制作软件,现在有哪个网站的视频编辑素材最齐全的,背景音乐、音效等?  LinuxCD持续部署教程_自动发布与回滚机制  UC浏览器如何切换小说阅读源_UC浏览器阅读源切换【方法】  青岛网站建设如何选择本地服务器?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】