阅读更多

对比在android中批量插入数据的3中方式对比(各插入1W条数据所花费的时间):

1、 一个一个插入

 

/** * 向表中插入数据 *  * @param openHelper * @param appInfo * @return */public static boolean insert(SQLiteOpenHelper openHelper,RemoteAppInfo appInfo) {if (null == appInfo) {return true;}SQLiteDatabase db = null;try {db = openHelper.getWritableDatabase();ContentValues values = appInfo.getContentValues();return -1 != db.insert(RemoteDBHelper.TABLE_APP_REMOTE, null,values);} catch (Exception e) {e.printStackTrace();} finally {if (null != db) {db.close();}}return false;}for (RemoteAppInfo remoteAppInfo : list) {RemoteDBUtil.insert(helper, remoteAppInfo);}

 耗时:106524ms,也就是106s

 

 

2、 开启事务批量插入,使用

SqliteDateBase中的

insert(String table, String nullColumnHack, ContentValues values)

方法

 

 

/** * 向表中插入一串数据 *  * @param openHelper * @param appInfo * @return 如果成功则返回true,否则返回flase */public static boolean insert(SQLiteOpenHelper openHelper,List list) {boolean result = true;if (null == list || list.size() <= 0) {return true;}SQLiteDatabase db = null;try {db = openHelper.getWritableDatabase();db.beginTransaction();for (RemoteAppInfo remoteAppInfo : list) {ContentValues values = remoteAppInfo.getContentValues();if (db.insert(RemoteDBHelper.TABLE_APP_REMOTE, null, values) < 0) {result = false;break;}}if (result) {db.setTransactionSuccessful();}} catch (Exception e) {e.printStackTrace();return false;} finally {try {if (null != db) {db.endTransaction();db.close();}} catch (Exception e) {e.printStackTrace();}}return true;}

耗时:2968ms

 

 

3、 开启事务批量插入,使用

SQLiteStatement

 

 

/** * 第二种方式批量插入(插入1W条数据耗时:1365ms) * @param openHelper * @param list * @return */public static boolean insertBySql(SQLiteOpenHelper openHelper,List list) {if (null == openHelper || null == list || list.size() <= 0) {return false;}SQLiteDatabase db = null;try {db = openHelper.getWritableDatabase();String sql = "insert into " + RemoteDBHelper.TABLE_APP_REMOTE + "("+ RemoteDBHelper.COL_PKG_NAME + ","// 包名+ RemoteDBHelper.COL_USER_ACCOUNT + ","// 账号+ RemoteDBHelper.COL_APP_SOURCE + ","// 来源+ RemoteDBHelper.COL_SOURCE_UNIQUE + ","// PC mac 地址+ RemoteDBHelper.COL_MOBILE_UNIQUE + ","// 手机唯一标识+ RemoteDBHelper.COL_IMEI + ","// 手机IMEI+ RemoteDBHelper.COL_INSTALL_STATUS + ","// 安装状态+ RemoteDBHelper.COL_TRANSFER_RESULT + ","// 传输状态+ RemoteDBHelper.COL_REMOTE_RECORD_ID // 唯一标识+ ") " + "values(?,?,?,?,?,?,?,?,?)";SQLiteStatement stat = db.compileStatement(sql);db.beginTransaction();for (RemoteAppInfo remoteAppInfo : list) {stat.bindString(1, remoteAppInfo.getPkgName());stat.bindString(2, remoteAppInfo.getAccount());stat.bindLong(3, remoteAppInfo.getFrom());stat.bindString(4, remoteAppInfo.getFromDeviceMd5());stat.bindString(5, remoteAppInfo.getMoblieMd5());stat.bindString(6, remoteAppInfo.getImei());stat.bindLong(7, remoteAppInfo.getInstallStatus());stat.bindLong(8, remoteAppInfo.getTransferResult());stat.bindString(9, remoteAppInfo.getRecordId());long result = stat.executeInsert();if (result < 0) {return false;}}db.setTransactionSuccessful();} catch (Exception e) {e.printStackTrace();return false;} finally {try {if (null != db) {db.endTransaction();db.close();}} catch (Exception e) {e.printStackTrace();}}return true;}

 

 

耗时:1365ms

 

 

更多相关文章

  1. Android(安卓)批量读取APK 包名,版本信息
  2. 整理出15个Android很有用的代码片段
  3. Android(安卓)简单联系人操作
  4. Android(安卓)Studio多渠道批量打包及代码混淆
  5. android批量插入数据效率对比
  6. android批量插入数据效率对比
  7. 整理出15个Android很有用的代码片段
  8. 整理出15个Android很有用的代码片段
  9. [Android] 提高ORMLite插入大量数据效率的解决方案

随机推荐

  1. Android应用程序消息处理机制(Looper、Han
  2. Android(安卓)Studio更新以及异常处理【s
  3. 在Android中如何通过点击edittext之外的
  4. Android中使用SQLiteOpenHelper对SQLite
  5. android studio下Maven管理android的库
  6. android事件薄-不能安装APK的一种原因
  7. 取代opencore的stagefright
  8. Android(安卓)几种常用关于屏幕操作的方
  9. Android(安卓)网络管理
  10. :Android完全关闭应用程序