情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

Windows Phone 8 のローカル データベース接続文字列

2014/06/18

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

Windows Phone アプリでは、LINQ to SQL を使用してリレーショナル データをローカル データベースに格納することができます。このトピックでは、アプリのローカル データベースで使用できる接続文字列パラメーターについて説明します。ローカル データベースの使用の詳細については、「Windows Phone 8 のローカル データベース」を参照してください。

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

データベースを作成する前に、接続文字列を指定してデータベースの構成値を指定することができます。たとえば、接続文字列を使用して、データベースを暗号化するかどうか、パスワードで保護するかどうかを指定できます。

接続文字列では、個々のパラメーターをセミコロンで区切り、パラメーター値を単一引用符で囲みます。一部のパラメーターはデータベースの作成にのみ適用されます。データベースの作成後、これらのパラメーターは無視されます。

次の表は、ローカル データベースの接続文字列としてサポートされているパラメーターの一覧です。

パラメーター

説明

data source または datasource

ローカル データベース ファイルのファイル パスと名前。指定した接続文字列プロパティがこのプロパティのみの場合、データ コンテキスト オブジェクトのインスタンス化にはこのプロパティの値のみが必要になります。データ コンテキストの詳細については、「Windows Phone 8 のローカル データベース」を参照してください。

次のプレフィックスを使用して、パスのルートの場所を明示的に指定します。

  • isostore: パスはローカル フォルダー (以前の分離ストレージ) に適用されます。

  • appdata: パスはインストール フォルダーに適用されます。

プレフィックスを指定しない場合、ファイル パスはローカル フォルダーに適用されます。

Password または Pwd または database password または ssce:database password

データベースのパスワード。最大 40 文字です。指定しない場合、既定値はパスワードなしです。データベースの暗号化を有効にする場合は、このプロパティが必要です。パスワードを指定すると、データベースの暗号化が自動的に有効になります。空白のパスワードを指定した場合、データベースは暗号化されません。

メモメモ:
作成済みのデータベースを暗号化することはできません。

データベースは AES-128 を使用して暗号化され、パスワードは SHA-256 を使用してハッシュされます。

データベース全体ではなく選択したデータを暗号化するには、「Windows Phone 8 でデータを暗号化する方法」を参照してください。

max buffer size または ssce:max buffer size

ローカル データベースが変更をディスクにフラッシュする前に、ローカル データベースで使用できるメモリの最大容量 (キロバイト単位)。指定しない場合、既定値は 384 です。最大値は 5120 です。

max database size または ssce:max database size

ローカル データベースの最大サイズ (メガバイト単位)。指定しない場合、既定値は 32 です。最大値は 512 です。

Mode または file mode または ssce:mode

データベース ファイルを開くときに使用するモード。有効な値は、次のとおりです。

  • Read Write: 複数のプロセスでデータベースを開いて変更することができます。モード プロパティを指定しない場合は、これが既定の設定になります。

  • Read Only: インストール フォルダーからデータベースの読み取り専用のコピーを開くことができます。

  • Exclusive: 他のプロセスがデータベースを開いたり変更したりすることはできません。

  • Shared Read: データベースを開いている間、他のプロセスはデータベースの読み取りはできますが変更はできません。

重要:重要:
Windows Phone 8 から、Read Only パラメーター値はインストール フォルダーでのみ使用できるようになりました。

Culture Identifier

データベースで使用するカルチャ コード。たとえば、英語 (米国) の場合は en-US です。Windows Phone OS 7.1 でサポートされているカルチャ コードの一覧については、「Windows Phone のカルチャおよび言語サポート」を参照してください。

メモメモ:
既存のデータベースに接続するときにこのプロパティが使用されている場合、このプロパティは無視されます。

Case Sensitive または CaseSensitive

データベースの照合で大文字と小文字を区別するかどうかを指定するブール値。照合で大文字と小文字を区別する場合は true、区別しない場合は false に設定します。指定しない場合、既定値は false です。

メモメモ:
既存のデータベースに接続するときにこのプロパティが使用されている場合、このプロパティは無視されます。
重要:重要:

Microsoft SQL Compact の一部の接続文字列パラメーターは、このリリースの Windows Phone アプリ プラットフォーム で動作する可能性があります。このトピックに記載されていない接続文字列パラメーターを使用することはお勧めしません。

ローカル データベースで接続文字列を使用する方法を次の例に示します。

単一パラメーターの使用

データ ソース プロパティのみを使用する場合は、次の例に示すように、接続文字列にプロパティ名を含める必要はありません。

// Create the data context.
MyDataContext db = new MyDataContext ("isostore:/mydb.sdf")

この例では、isostore プレフィックスはファイルがローカル フォルダーにあることを示しています。

インストール フォルダーからの読み取り

インストール フォルダーは書き込み操作をサポートしていません。インストール フォルダーでローカル データベースに接続する場合は、File Mode プロパティを使用して、読み取り専用として接続を指定する必要があります。インストール フォルダーへ読み取り専用で接続する方法を次の例に示します。

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

重要:重要:

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

暗号化データベースの作成

暗号化されたデータベースが必要な場合は、データベースを作成する前に接続文字列を使用してパスワードを指定する必要があります。この例では、データベースを作成する前にパスワードを指定します。

// Create the data context.
MyDataContext db = new MyDataContext("Data Source='isostore:/mydb.sdf';Password='securepassword';");

// Create an encrypted database after confirming that it does not exist.
if (!db.DatabaseExists()) db.CreateDatabase();

データベース全体ではなく選択したデータを暗号化するには、「Windows Phone 8 でデータを暗号化する方法」を参照してください。

特定のカルチャを使用するデータベースの作成

この例では、ドイツ語のカルチャと大文字と小文字を区別する照合を用いてデータベースを作成します。

// Create the data context.
MyDataContext db = new MyDataContext("Data Source = 'mydb.sdf'; Culture Identifier = de-de; Case Sensitive = true;");

// Create a database after confirming that it does not exist.
if (!db.DatabaseExists()) db.CreateDatabase();

表示: