2012-04-17 25 views
1

我無法將大量數據插入到Android sqlite數據庫(~7000行數據)中。我使用的是InsertHelper,但它似乎並沒有加速這麼多。有沒有其他的方式來有效地將這麼多的數據插入數據庫?(Android)插入數千行到sqlite

謝謝。

編輯:

我找到了一個修復它。我插入的代碼如下(細節省略簡潔):

public void addEntries(ArrayList<KeywordMap> keywords) { 
     if (keywords == null || keywords.size() == 0) 
      return; 

     mDb.beginTransaction(); 

     String sql = "Insert into " + AUTOCOMPLETE_TABLE + " (path, name, course_id, " + 
       "course_id_norm, type, year) values(?,?,?,?,?,?)"; 
     SQLiteStatement insert = mDb.compileStatement(sql); 

     for (KeywordMap keyword : keywords) { 
      insert.bindString(1, keyword.path); 
      insert.bindString(2, keyword.name); 
      insert.bindString(3, keyword.cid); 
      insert.bindString(4, keyword.cid_norm); 
      insert.bindDouble(5, keyword.type); 
      insert.bindDouble(6, keyword.year); 

      insert.execute(); 
     } 

     mDb.setTransactionSuccessful(); 
     mDb.endTransaction(); 
    } 
+2

什麼是你的INSERT語句是什麼樣子?周圍環境是什麼? – sarnold 2012-04-17 02:45:51

+0

我找到了一個很好的解決方案(運行時間可能減少了大約5倍) – Jin 2012-04-17 05:17:35

+0

一旦堆棧允許您回答自己的問題,請提交最終結果,以便其他人可以在將來找到它。謝謝! – sarnold 2012-04-17 23:52:53

回答

8
db.beginTransaction() 

//insert, insert, insert … n-insert 

db.setTransactionSuccessful(); 
db.endTransaction(); 
+0

可能就是這樣。但是,這仍然是一個猜測。 :)一個好的,但仍然... – davidcesarino 2012-04-17 03:32:20

+0

謝謝,增加交易肯定有幫助。我通過使用編譯的sql語句進一步優化了它:] – Jin 2012-04-17 05:17:06