将大量数据添加到C#中的SQLite数据库
问题描述:
我正在尝试使用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);
}
}
答
从我的经验,包裹尽可能多的数据库调用尽可能为交易速度东西了不少:
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
http://stackoverflow.com/q/1579201/62576和http://stackoverflow.com/q/364017/62576可能会提供一些见解。 – 2013-03-27 23:44:20