使用Android

时间:2017-10-28 00:49:29

标签: java android sqlite sharedpreferences

我对在sqlite(Android)中插入数据的性能提出了一个小问题。我有以下结构的数据:

0 | 1

0 | 2

1 | 3

...

在某些情况下,它们非常大(约50,000行)。我想用SQLite管理数据,但不知何故插入过程需要很长时间(近1分钟)!如果我将它们保存在SharedPreferences中,它几乎会立即发生。

我的插入代码如下所示:

    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues values = new ContentValues();

    long id;
    db.beginTransaction();
    try{
        values.put(KEY_FRIENDIDONE,firstFriendID);
        values.put(KEY_FRIENDIDTWO,secondFriendID);
        values.put(KEY_CREATED_AT,getDateTime());

        System.out.println(firstFriendID+" "+secondFriendID);

        id= db.insertWithOnConflict(TABLE_FRIENDSHIPS,null,values,SQLiteDatabase.CONFLICT_IGNORE);
        db.setTransactionSuccessful();
    }finally {
        db.endTransaction();
    }

    return id;

所以我问自己是否应该使用SharedPreferences而不是SQLite。

Btw ID保存为Integer。但是,如果我将它们保存为字符串,那么我现在不会有所作为。

1 个答案:

答案 0 :(得分:1)

实际上,您应该在以下事务中插入50.000行:

db.beginTransaction();
for(i = 0 -> i = 50.000) doInsert();
// end trasaction here.

你应该看一下GreenDao,它可以帮助你通过某种代码来改善数据库管理和性能:

friendsDao.insertTx(new Friends(id1,id2,time));