Sqlite DB查询需要很长时间WP8

时间:2014-04-06 11:49:17

标签: c# sql database sqlite windows-phone-8

我正在使用此链接作为参考使用sqlite.net构建Windows Phone 8应用程序: -

http://developer.nokia.com/community/wiki/How_to_use_SQLite_in_Windows_Phone

项目中有一个数据库正在隔离存储中播种。该数据库只包含一个表,其中有近26k个条目。

我正在尝试连接到MainPage.xaml.cs中的该数据库,如下所示: -

protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
{
    base.OnNavigatedTo(e);
    using (SQLiteConnection db = new SQLiteConnection(App._dbPath))
    {
        db.GetTableInfo("IWMCemeteries");
        try
        {
            List<IWMCemeteries> cemeteriesList = db.Table<IWMCemeteries>().ToList<IWMCemeteries>();
             MessageBox.Show("Number of elements in table is " + cemeteriesList.Count);
        }
        catch (Exception ex)
        {
            Debug.WriteLine(ex.Message);
        }
    }
}

问题是显示消息对话框需要太长时间(超过25秒)。

我尝试了另一种运行原始查询的方法,如下所示: -

List<IWMCemeteries> cemeteries = db.Query<IWMCemeteries>("select * from IWMCemeteries");
MessageBox.Show("Number of elements in list is " + cemeteries.Count);

但这似乎需要更长时间!(差不多30秒)。

有人可以告诉我这里的错误吗?

谢谢,

拉​​杰夫

2 个答案:

答案 0 :(得分:3)

这对我来说没有错。正如一些人注意到的那样,有26k行你开始使用有趣的大量数据。因此,在使用“精简”数据库的移动设备中,您必须根据您的实际需要调整您的请求:

  • 您想要行数,然后使用SELECT COUNT(*)
  • 您希望显示列表中的所有行,然后使用分页或异步加载(向下滚动)每次只获取20个元素。

在任何应用中,但主要是在移动设备中,您必须考虑移动的数据量。

通过这种方式,任何请求都是即时的,您的应用程序将表现良好。

答案 1 :(得分:1)

您的查询没有任何问题。只需限制从数据库中获取的数据。它是一种功率有限的移动设备,而不是一台完整的电脑。