gpt4 book ai didi

c# - 如何批量插入SQLITE数据库?

转载 作者:行者123 更新时间:2023-11-30 20:20:26 25 4
gpt4 key购买 nike

我正在开发 UWP 应用程序。

我有一个数据库,应该用大约 20,000 条记录进行初始化。定义如下的记录:

private static readonly ObservableCollection<TickRecord> TickRecords = new ObservableCollection<TickRecord>();

我尝试像这样一次插入一条记录:

private void CreateFakeTickRecords()
{
if ( Database.Database.CountTickRecords() > 0 )
{
return;
}

foreach ( var tickRecord in TickRecords )
{
Database.Database.AddOrUpdateTickRecord( tickRecord );
}
}

public static void AddOrUpdateTickRecord( TickRecord tickRecord )
{
// Create a new connection
using ( var db = new SQLiteConnection( new SQLitePlatformWinRT(), DbPath ) )
{
if ( tickRecord.Id == 0 )
{
// New
db.Insert( tickRecord );
}
else
{
// Update
db.Update( tickRecord );
}
}
}

此代码工作正常,但速度太慢。

我想修改它以便我可以进行“批量插入”。

我该怎么做?

谢谢

最佳答案

试试 InsertAll 和 UpdateAll 函数。希望这只打开一次数据库表并立即插入/更新所有内容。您需要提前确定要插入/更新哪些对象,但这仍然可以加快速度。

List<TickRecords> updates = new List<TickRecords>(); 

List<TickRecords> inserts = new List<TickRecords>();

foreach ( var tickRecord in tickRecords )
{
if ( tickRecord.Id == 0 )
{
updates.Add(tickRecord);
}
else
{
inserts.Add(tickRecords);
}
}



using ( var db = new SQLiteConnection( new SQLitePlatformWinRT(), DbPath ) )
{
db.InsertAll(inserts);
db.UpdateAll(updates);
}

关于c# - 如何批量插入SQLITE数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36778304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com