在我的 Windows 8 Metro 应用程序中,我的 SQLite 数据库中有一个表,有时需要使用大量记录(大约 500 到 600 条)进行更新。我从 Web 服务获取记录,然后循环遍历这些记录并将它们插入到表中。问题是此操作大约需要 10 到 15 秒,并且会锁定 UI(包括进度条)。代码如下。
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
foreach (var item in body3)
{
db.Insert(new Site
{
siteName = item.siteName,
siteAddress = item.siteAddress,
siteCity = item.siteCity,
siteState = item.siteState,
siteID = item.siteID
});
progressBar.Value = i;
i++;
}
});
我认为这是 SQLite 的问题。我似乎也无法从中捕获异常。
我认为我真正的问题是如何让它在另一个线程中正确运行,这样它就不会影响用户界面。我并不担心插入记录需要一段时间。我只是希望 UI 保持响应能力。
最佳答案
--不要在循环中的每次插入中更新您的 UI...如果需要的话,也许每 20% 更新一次
--使用事务-- http://www.sqlite.org/faq.html #19 在这里 Improve INSERT-per-second performance of SQLite?
关于c# - 将大量记录插入Sqlite数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16972580/