android sqlite插入效率(转载)
时间:
2014-03-31 12:21:08
阅读:
637
评论:
收藏:
0
[点我收藏+]
对比在android中批量插入数据的3中方式对比(各插入1W条数据所花费的时间):
1、
一个一个插入
-
-
-
-
-
-
-
- publicstaticboolean
insert(SQLiteOpenHelper openHelper,
-
RemoteAppInfo appInfo) {
- if (null == appInfo) {
-
returntrue;
- }
-
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();
-
}
- }
- returnfalse;
- }
-
-
- for (RemoteAppInfo
remoteAppInfo : list) {
- RemoteDBUtil.insert(helper, remoteAppInfo);
-
}
耗时:106524ms,也就是106s
2、
开启事务批量插入,使用
SqliteDateBase中的
insert(String
table, String nullColumnHack, ContentValues values)
方法
-
-
-
-
-
-
-
- publicstaticboolean
insert(SQLiteOpenHelper openHelper,
-
List<RemoteAppInfo> list) {
- boolean result =
true;
- if (null == list || list.size()
<= 0) {
- returntrue;
- }
- 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();
- returnfalse;
- } finally {
- try {
-
if (null != db) {
-
db.endTransaction();
-
db.close();
-
}
- } catch (Exception e) {
-
e.printStackTrace();
- }
- }
- returntrue;
- }
耗时:2968ms
3、
开启事务批量插入,使用
SQLiteStatement
-
-
-
-
-
-
- publicstaticboolean
insertBySql(SQLiteOpenHelper openHelper,
-
List<RemoteAppInfo> list) {
- if (null == openHelper ||
null == list || list.size() <= 0) {
-
returnfalse;
- }
-
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 + ","
-
+ RemoteDBHelper.COL_MOBILE_UNIQUE + ","
-
+ RemoteDBHelper.COL_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) {
-
returnfalse;
-
}
-
}
-
db.setTransactionSuccessful();
- } catch (Exception e) {
-
e.printStackTrace();
-
returnfalse;
- } finally {
-
try {
-
if (null != db) {
-
db.endTransaction();
-
db.close();
-
}
-
} catch (Exception e) {
-
e.printStackTrace();
-
}
- }
- returntrue;
- }
耗时:1365ms
android sqlite插入效率(转载),布布扣,bubuko.com
android sqlite插入效率(转载)
原文:http://www.cnblogs.com/elliotta/p/3633739.html