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如何生成URL和重定向?(路由助手函数)
1688铺货到淘宝怎么操作 1688一键铺货到自己店铺详细步骤
如何快速生成高效建站系统源代码?
打造顶配客厅影院,这份100寸电视推荐名单请查收
Windows Hello人脸识别突然无法使用
网站制作大概多少钱一个,做一个平台网站大概多少钱?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Gemini怎么用新功能实时问答_Gemini实时问答使用【步骤】
Laravel与Inertia.js怎么结合_使用Laravel和Inertia构建现代单页应用
JavaScript中如何操作剪贴板_ClipboardAPI怎么用
长沙做网站要多少钱,长沙国安网络怎么样?
Linux系统命令中tree命令详解
ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集
Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】
Laravel如何使用Gate和Policy进行权限控制_Laravel权限判定与策略规则配置
Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能
如何制作一个表白网站视频,关于勇敢表白的小标题?
公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?
JavaScript常见的五种数组去重的方式
百度输入法全感官ai怎么关 百度输入法全感官皮肤关闭
深圳网站制作培训,深圳哪些招聘网站比较好?
详解MySQL数据库的安装与密码配置
什么是JavaScript解构赋值_解构赋值有哪些实用技巧
如何挑选高效建站主机与优质域名?
bing浏览器学术搜索入口_bing学术文献检索地址
如何在Windows虚拟主机上快速搭建网站?
php 三元运算符实例详细介绍
Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】
大连 网站制作,大连天途有线官网?
Python制作简易注册登录系统
Python文本处理实践_日志清洗解析【指导】
Google浏览器为什么这么卡 Google浏览器提速优化设置步骤【方法】
北京网站制作公司哪家好一点,北京租房网站有哪些?
免费网站制作appp,免费制作app哪个平台好?
如何在阿里云虚拟服务器快速搭建网站?
PHP 实现电台节目表的智能时间匹配与今日/明日轮播逻辑
浅述节点的创建及常见功能的实现
如何在Tomcat中配置并部署网站项目?
如何用景安虚拟主机手机版绑定域名建站?
Laravel怎么在Blade中安全地输出原始HTML内容
如何快速搭建自助建站会员专属系统?
Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】
JavaScript中的标签模板是什么_它如何扩展字符串功能
微信小程序 input输入框控件详解及实例(多种示例)
MySQL查询结果复制到新表的方法(更新、插入)
如何在腾讯云服务器上快速搭建个人网站?
Laravel安装步骤详细教程_Laravel环境搭建指南
Laravel如何使用Eloquent进行子查询
JS弹性运动实现方法分析
如何选择可靠的免备案建站服务器?

