2013-03-27 153 views
1

我正在嘗試使用C#和System.Data.SQLite將大量數據添加到Windows 8應用程序中的SQLite數據庫。我有一個列表中的所有對象(MediaItem),並使用foreach循環將每個對象添加到數據庫中。 Unfortunatley這很慢,所以我想知道是否有辦法加快速度。例如,我可以將完整列表交給數據庫嗎? 這裏是我到目前爲止的代碼:將大量數據添加到C#中的SQLite數據庫

List<MediaItem> items; 

// adding lots of onbjects to the list... 

using (var db = new SQLiteConnection(dbPath)) 
{ 
    foreach (var item in items) 
    { 
     db.Insert(item); 
    } 
} 
+0

http://stackoverflow.com/q/1579201/62576和http://stackoverflow.com/q/364017/62576可能會提供一些見解。 – 2013-03-27 23:44:20

回答

5

從我的經驗,包裹儘可能多的數據庫調用盡可能爲交易速度東西了不少:

using (var db = new SQLiteConnection(dbPath)) 
{ 
    db.RunInTransaction(() => 
    { 
     foreach (var item in items) 
     { 
      db.Insert(item); 
     } 
    }); 
} 
+0

就像一個魅力,非常感謝。現在添加50.000項目是在不到一秒的時間內完成的,而早些時候花費了幾分鐘。 – Thomas 2013-03-28 00:32:14

相關問題