Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中向SQLite数据库添加大量数据#_C#_Database_Sqlite_Windows Store Apps - Fatal编程技术网

C# 在C中向SQLite数据库添加大量数据#

C# 在C中向SQLite数据库添加大量数据#,c#,database,sqlite,windows-store-apps,C#,Database,Sqlite,Windows Store Apps,我目前正在尝试使用C#和System.data.SQLite向我的Windows8应用程序中的SQLite数据库添加大量数据。我将所有对象(MediaItem)都放在一个列表中,并使用foreach循环将每个对象添加到数据库中。不幸的是,这太慢了,所以我想知道是否有办法加快速度。例如,我可以将完整的列表交给数据库吗? 以下是我目前的代码: List<MediaItem> items; // adding lots of onbjects to the list... using

我目前正在尝试使用C#和System.data.SQLite向我的Windows8应用程序中的SQLite数据库添加大量数据。我将所有对象(MediaItem)都放在一个列表中,并使用foreach循环将每个对象添加到数据库中。不幸的是,这太慢了,所以我想知道是否有办法加快速度。例如,我可以将完整的列表交给数据库吗? 以下是我目前的代码:

List<MediaItem> items;

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

using (var db = new SQLiteConnection(dbPath))
{
     foreach (var item in items)
     {
         db.Insert(item);
     }
 }
列表项;
//正在向列表中添加大量OnObject。。。
使用(var db=new-SQLiteConnection(dbPath))
{
foreach(项目中的var项目)
{
db.插入(项目);
}
}

根据我的经验,将尽可能多的数据库调用包装到事务中会大大加快速度:

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

根据我的经验,将尽可能多的数据库调用包装到事务中会大大加快速度:

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

并可能提供一些见解。可能会提供一些见解。很有魅力,非常感谢。现在添加50000个项目不到一秒钟就完成了,而之前只需几分钟。效果很好,非常感谢。现在添加50000项只需不到一秒钟,而之前的添加只需几分钟。