このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
MSDN ライブラリ
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 用のアプリで参照データベースを展開する方法

2014/06/18

対象: Windows Phone 8 および Windows Phone Silverlight 8.1 | Windows Phone OS 7.1

Windows Phone OS 7.1 以降、参照データをローカル データベースに保存し、Windows Phone アプリで配置することができます。アプリをデバイスにインストール後は、参照データベースをインストール フォルダー内に残して読み取り専用接続できるようにすることもできれば、ローカル フォルダーにコピーして読み取り操作と書き込み操作の両方を行えるようにすることもできます。このトピックでは、参照データベースを作成し、アプリ内で使用する方法について説明します。ローカル データベースの使用の詳細については、「Windows Phone 8 のローカル データベース」を参照してください。

重要:重要:

デスクトップ上に作成された Microsoft SQL Server Compact (SQL CE) データベースは、Windows Phone アプリで操作できる場合がありますが、これは正式にはサポートされていません。

このトピックは、次のセクションで構成されています。

プライマリ アプリで配置するローカル データベースを作成するには、ヘルパー アプリが必要です。ヘルパー アプリは、開発コンピューター上で実行され、ローカル フォルダーにローカル データベースを作成し、そのデータベースに必要な参照データを読み込みます。

このセクションでは、ヘルパー アプリを作成し、そのヘルパー アプリを使用して参照データベースを作成し、その後に分離ストレージ エクスプローラー (ISETool.exe) を使用してローカル データベース ファイルを抽出して、コンピューター上に保存します。分離ストレージ エクスプローラーの詳細については、「Windows Phone 8 の分離ストレージ エクスプローラー ツールを使用する方法」を参照してください。

参照データベースを作成するには

  1. ローカル データベースを作成して、そのデータベースに参照データを読み込むヘルパー アプリを作成します。詳細については、「Windows Phone 8 の基本的なローカル データベース アプリを作成する方法」および「Windows Phone 8 用の MVVM でローカル データベース アプリを作成する方法」を参照してください。

  2. ヘルパー アプリを Windows Phone エミュレーターまたは Windows Phone デバイスに配置します。

  3. ローカル データベースを作成してそのデータベースに参照データを読み込むヘルパー アプリを適宜実行します。ローカル データベースは、すべてローカル フォルダー内に作成されます。

  4. WMAppManifest.xml ファイルの App 要素の ProductID 属性で指定されたアプリの製品 GUID を取得します。これは、ローカル フォルダーからローカル データベース ファイルをコピーするときに必要になります。

  5. テザリングされたデバイスまたはエミュレーターがまだ実行されている間に、分離ストレージ エクスプローラーを使用してローカル データベースをコンピューターにコピーします。詳細については、「Windows Phone 8 の分離ストレージ エクスプローラー ツールを使用する方法」を参照してください。

ローカル データベース ファイルをコンピューターに保存したら、その他の種類の既存ファイルを追加する場合と同じ方法でプライマリ アプリに追加できます。

アプリに参照データベースを追加するには

  1. Visual Studio で、参照データベースを使用する Windows Phone アプリのためのプロジェクトを作成します。このアプリは、プライマリ アプリになるもので、ヘルパー アプリとは別のアプリです。

  2. プライマリ アプリの [プロジェクト] メニューから、[既存の項目の追加] を選択します。

  3. [既存の項目の追加] メニューから、分離ストレージ エクスプローラーを使用してコンピューターに保存したローカル データベース ファイルを選択し、[追加] をクリックします。これで、ローカル データベースがプロジェクトに追加されます。

  4. ソリューション エクスプローラーで、ローカル データベース ファイルを右クリックし、ファイルがコンテンツとしてビルドされ、常に出力ディレクトリにコピーされるように ([常にコピーする]) ファイルのプロパティを設定します。

ローカル データベースをアプリで配置すると、配置後にインストール フォルダー内に格納されます。インストール フォルダーは読み取り専用です。プライマリ アプリは、インストール フォルダーにあるローカル データベースに読み取り専用モードで接続し、読み取りと書き込み両方の操作ができるようにそのデータベースをローカル フォルダーにコピーすることができます。このセクションでは、これら 2 つのオプションについて詳しく説明します。

重要:重要:

インストール フォルダーからのみ参照データベース ファイルへアクセスする場合は、データベースを暗号化することはお勧めしません。暗号化すると、最初の接続時にシステムによる所定のデータベースの保守作業 (インデックスの再作成など) を行えなくなります。暗号化された参照データベースを使用するには、使用する前にローカル フォルダーにコピーしてから、読み取り/書き込みモードで接続します。

インストール フォルダーから読み取るには

  • インストール フォルダー内の参照データベースに接続する場合は、接続文字列内の File Mode プロパティを使用して、接続を読み取り専用に指定する必要があります。インストール フォルダーへ読み取り専用で接続する方法を次の例に示します。接続文字列の詳細については、「Windows Phone 8 のローカル データベース接続文字列」を参照してください。

    // Create the data context.
    MyDataContext db = new MyDataContext("Data Source = 'appdata:/mydb.sdf'; File Mode = read only;");
    

    この例では、ファイル パスに appdata プレフィックスを使用して、インストール フォルダーのパス (appdata) とローカル フォルダーのパス (isostore) を区別しています。プレフィックスを付けなかった場合は、データ コンテキストによりパスはローカル フォルダーになります。

参照データベースをローカル フォルダーにコピーするには

  • 参照データベースをインストール フォルダーからローカル フォルダーにコピーするには、ストリーム ベースのコピーを実行します。ReferencedDB.sdf という名前のローカル データベース ファイルをインストール フォルダーのルートからローカル フォルダーのルートへコピーする MoveReferenceDatabase という名前のメソッドを次の例に示します。

    using System;
    using System.IO;
    using System.IO.IsolatedStorage;
    using System.Windows;
    
    
    namespace PrimaryApplication
    {
        public class DataHelper
        {
    
            public static void MoveReferenceDatabase()
            {
                // Obtain the virtual store for the application.
                IsolatedStorageFile iso = IsolatedStorageFile.GetUserStoreForApplication();
    
                // Create a stream for the file in the installation folder.
                using (Stream input = Application.GetResourceStream(new Uri("ReferenceDB.sdf", UriKind.Relative)).Stream)
                {
                    // Create a stream for the new file in the local folder.
                    using (IsolatedStorageFileStream output = iso.CreateFile("ReferenceDB.sdf"))
                    {
                        // Initialize the buffer.
                        byte[] readBuffer = new byte[4096];
                        int bytesRead = -1;
    
                        // Copy the file from the installation folder to the local folder. 
                        while ((bytesRead = input.Read(readBuffer, 0, readBuffer.Length)) > 0)
                        {
                            output.Write(readBuffer, 0, bytesRead);
                        }
                    }
                }
            }
        }
    }
    
    

表示:
© 2015 Microsoft