带保存点的sqlite大量插入

时间:2013-06-08 18:01:13

标签: android sqlite

我正在开发一个Android应用程序,需要在登录时下载大量有关某些预订的数据。第一个实现是启动事务,保存所有预订,并在最后提交事务。这种方法具有可观的性能,但副作用是有时用户强行关闭应用程序,导致从那一刻起丢失所有已保存的数据。 我现在采取的方法是在交易中保存每个预订(因为每个预订都在某些表中),但是当有大量预订时保存所有数据所花费的时间有时超过15分钟,这也是许多。是否有任何方法可以帮助我快速完成插入操作而无需对所有数据进行转换?实际上代码是这样的:

for (Booking _booking : bookings) {

            _booking.save();
        }

这是保存方法的伪代码

result=false;
try{
beginTransaction()

insert("table1",ContentValues)
insert("table2",ContentValues)
insert("table3",ContentValues)
insert("table4",ContentValues)

execSQL("SAVEPOINT " + this.bookingCode);
result = true;
}
catch{
execSQL("ROLLBACK TO SAVEPOINT " + lastSavePoint)
}

//this method commits or not depending on the result. I need to commit in any case 
//because i use beginTransactionWithListener in beginTransaction() function
endTransaction(result);

0 个答案:

没有答案