1

私の Windows Phone 8 アプリケーション (C#/XAML/SQLite) は、「ベータ版」として Windows ストアに公開し、スマートフォン (Lumia 620) にインストールした後、動作が非常に遅くなります。これらの「フリーズ」は、私のアプリケーションがsqliteデータベースファイルへの選択を実行する場所です。また、データベース クエリがないページでは、すべてが完璧に機能します。だからその通りだと思います。

私が理解していないのは、まったく同じ設定のアプリケーションが、Visual Studio からデプロイすると正常に動作するということです。

nokia.com のこのトピックで説明されているように、sqlite を使用しています - http://developer.nokia.com/Community/Wiki/How_to_use_SQLite_in_Windows_Phone

私のソリューションには c++ sqlite プロジェクトがあり、sqlite-net パッケージの 2 つのファイル (SQLite.cs と SQLiteAsync.cs) があります。

ビルド構成は「Release」、プラットフォームは「ARM」です。

データベース クエリの例:

using MyApp.Model.Entities;
using System.Collections.Generic;

namespace MyApp.DAL
{
    public class MyAppRepository
    {
        private string dbPath = @"Assets/words.db";

        public List<Word> GetWordsByCatId(int id)
        {
            var sql = string.Format(@"
SELECT w.[id],
       w.[word_en],
       w.[word_ru]
  FROM words w INNER JOIN word_links l ON w.[id]=l.[word]
 WHERE l.category = {0};", id);

            using (var conn = new SQLite.SQLiteConnection(dbPath))
            {
                var list = conn.Query<Word>(sql);
                return list;
            }
        }

        public List<Cat> GetCats2()
        {
            var sql = string.Format(@"
SELECT c.[id],
       c.[name_en],
       c.[name_ru],
       COUNT(l.[id]) words
  FROM categories c
    LEFT JOIN word_links l ON c.[id]=l.[category]
 GROUP BY c.[id]
HAVING words>1;");

            using (var conn = new SQLite.SQLiteConnection(dbPath))
            {
                var list = conn.Query<Cat>(sql);
                return list;
            }
        }

        public List<Cat> GetCatsByWordId(int id)
        {
            var sql = string.Format(@"
SELECT c.[id],
       c.[name_en],       
       c.[name_ru]
  FROM categories c INNER JOIN word_links l ON c.[id]=l.[category]
 WHERE l.word = {0};", id);

            using (var conn = new SQLite.SQLiteConnection(dbPath))
            {
                var list = conn.Query<Cat>(sql);
                return list;
            }
        }
    }
}
4

0 に答える 0