向Sqlite数据库中插入大量记录
本文关键字:记录 插入 Sqlite 数据库 | 更新日期: 2023-09-27 18:17:21
在我的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保持响应
——不要在每次插入循环时更新你的UI…如果需要的话,可能每20%
——使用事务——http://www.sqlite.org/faq.html 19提高SQLite的每秒插入性能?
试一下。
foreach (var item in body3)
{
db.RunInTransaction(() =>
{
db.Insert(new Site
{
siteName = item.siteName,
siteAddress = item.siteAddress,
siteCity = item.siteCity,
siteState = item.siteState,
siteID = item.siteID
});
});
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
progressBar.Value = i;
i++;
});
}