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参数调整技巧【指南】

