满堂花醉三千客,一剑霜寒十四州。这篇文章主要讲述android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)相关的知识,希望能为你提供帮助。
原地址 :http://www.cnblogs.com/wangmars/p/3914090.html
SQLite,是一款轻型的数据库,被广泛的运用到很多嵌入式的产品中,因为占用的资源非常少,二其中的操作方式几乎和我们接触的数据库不多,甚至只有几百K的他自然会被需求者青睐,下面讲一下在这样的轻型数据库中怎么对他进行一些读写操作。
之前做选择联系人的时候出现如果一个手机里联系人超过2000的话,往数据库里面插入会非常耗时,不同的手机存储的条数不同,这个存储的数量和手机的内存有很大的关系,往往取决于手机内存,下面对于数据量大的情况来写一下sqlite的批量查询。
SqLite 插入数据有几种
第一种 :由于InsertHelper 这个类在android api17已经被废弃了,所以要是基于 之前开发的可以使用
文章图片
InsertHelper ih = new InsertHelper(db, "表名"); db.beginTransaction(); final int 列1= ih.getColumnIndex("列1"); final int 列2 = ih.getColumnIndex("列2"); try { for (Station s : busLines) { ih.prepareForInsert(); ih.bind(列1, 对应的值); ih.bind(列2, 对应的值); ih.execute(); } db.setTransactionSuccessful(); } finally { ih.close(); db.endTransaction(); db.close(); }
文章图片
第二种 :
【android SQLite 批量插入数据慢的解决方案 (针对于不同的android api 版本)】同样在 SQLiteDatabase 中
文章图片
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(); } }
文章图片
第三种:SQLiteDatabase db.insert("table_name", null, contentValues) 中也可以批量插入
文章图片
public void insertData(插入数据){ db.beginTransaction(); // 手动设置开始事务for (ContentValues v : list) { db.insert("表名", null, v); } db.setTransactionSuccessful(); // 设置事务处理成功,不设置会自动回滚不提交 db.endTransaction(); // 处理完成db.close() }
文章图片
第四种 : SQLiteStatement 个人比较喜欢用这种方式,对数据的处理看的很清楚明了
文章图片
String sql = "insert into表名(对应的列) values(?)"; SQLiteStatement stat = db.compileStatement(sql); db.beginTransaction(); for (数据集) { //循环所要插入的数据 } db.setTransactionSuccessful(); db.endTransaction(); db.close();
文章图片
总结: 以上的几种方式都用到了数据库中的事务这个东西,sqlite语句在其中只会走一次,其他的就是数据循环到数据库中的对象里,这样比以前用对象插入,再用for在外围循环快的不知道多少倍,之前插入2000多条数据300多毫秒,以后对于上万条数据也是非常之快的。
来源:http://www.cnblogs.com/wangmars/p/3914090.html
来自为知笔记(Wiz)
推荐阅读
- android实现gif图与文字混排
- 必须尝试的10种最佳Discord音板合集
- Mac的11款最佳文件粉碎机软件合集
- Android和iPhone的5大密码生成器应用程序合集
- Windows和Mac的13款最佳免费流程图软件合集
- Windows的13款最佳文件复制实用软件合集
- Mac和Windows的13个最佳FTP客户端(免费和付费)
- 11款Windows 10的最佳轻量级杀毒软件合集
- Windows 10的10款最佳免费动态壁纸合集