1

我使用这个函数将数据插入到 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 多行时需要很长时间!如何加快插入数据库的过程,插入完成后,如何对其应用更新

4

3 回答 3

1

一些选项:

  1. 预填充您的数据库。请参阅“使用数据库发布应用程序

  2. 使用事务来减少等待 I/O 的时间。参见例如“ Android SQLite 数据库:慢速插入”。您可能无法将所有 70k 行包装在单个事务中,但每个事务应该可以进行 100..1000 次插入,从而将累积 I/O 等待时间缩短几个数量级。

于 2013-11-10T07:09:02.807 回答
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/ 并且也很好地解释了它。

于 2013-11-10T06:49:36.363 回答
0

您必须使用事务在 1 次内完成插入。你可以使用这个:

//before insertion
db.beginTransaction();
//====do insertion
//after insertion
db.setTransactionSuccessful()
db.endTransaction();
于 2013-11-10T06:51:45.747 回答