我使用此函数将数据插入SQLite Android数据库:
public long insertAccount(String code,String name,int s3,int s4,String s5,String s6,int s7,
int s8,int s9,int s10,int s11,String s12,String s13,int s14,int s15,int s16) {
//container and place in it the information you want inserted, updated, etc.
ContentValues initialValues = new ContentValues();
initialValues.put(Code, code);
initialValues.put(Name,name);
initialValues.put(Type, s3);
initialValues.put(Level1, s4);
initialValues.put(Father, s5);
initialValues.put(ACCCurr,s6);
initialValues.put(AccNat, s7);
initialValues.put(LowLevel, s8);
initialValues.put(DefNum, s9);
initialValues.put(AccClass, s10);
initialValues.put(SubClass, s11);
initialValues.put(SSClass1, s12);
initialValues.put(SSClass2, s13);
initialValues.put(Stype1, s14);
initialValues.put(Stype2, s15);
initialValues.put(Stype3, s16);
return db.insert(DATABASE_TABLE, null, initialValues);
}
但是插入大约70,000多行时需要花费很多时间!如何加快插入数据库的过程,插入完成后,如何在其上应用更新?
答案 0 :(得分:1)
一些选项:
预填充数据库。请参阅“Ship an application with a database”
使用事务来减少等待I / O的时间。参见例如“Android SQLite database: slow insertion”。可能你不能在一个事务中包装所有70k行,但每个事务100-1000插入应该是可行的,将累积的I / O等待时间减少了几个数量级。
答案 1 :(得分:0)
使用PHP插入到SQLlite android中?怎么可能在Android手机中使用php,对不起我没有这个。
无论如何我相信你已经在这里编写了java代码,你想要在你的数据库中插入7k +记录。 在任何数据库中插入大量记录的样式称为“批量插入”,其目的是创建尽可能少的事务数,而不是一次性完成所有插入操作;如果关系数据库像sql server和oracle一样,它也是由特定的api完成的,但是在sqllite中,一个简单的老想法是用一堆数据进行单个事务
查看这篇使用相同技术http://www.techrepublic.com/blog/software-engineer/turbocharge-your-sqlite-inserts-on-android/的文章,并对其进行了很好的解释。
答案 2 :(得分:0)
您必须使用事务一次完成插入。你可以用这个:
//before insertion
db.beginTransaction();
//====do insertion
//after insertion
db.setTransactionSuccessful()
db.endTransaction();