c# - 将大量记录插入Sqlite数据库

标签 c# sqlite windows-8 microsoft-metro async-await

在我的 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/

相关文章:

c# - 如何禁用选中列表框中的复选框?

c# - 将 0x0EB8 之类的内容从字符串转换为 int32 类型?

azure - 我可以将 WAMS 连接到 Windows 应用商店应用程序和 WP8 应用程序吗?

c# - 安装 Framework 4.5 时以 .NET Framework 4 为目标

c# - 如何在 C# 中以 mm/dd/yyyy 格式获取今天的日期?

sqlite - 当你使用group by并且不给它一个聚合函数时,sqlite会做什么?

java - 如何从数据库中获取距当前时间最快的值?

c# - 如何检查文件是否是 C# 中的 SQLite 数据库?

windows-8 - WebView.Navigate 导致未处理的异常

visual-studio - Visual Studio 2012 先决条件 : Incorrect Function Setup Failure