Connection strings

接続文字列は、データベースへの接続方法を指定するために使用されます。 Microsoft.Data.Sqlite の接続文字列は、セミコロンで区切られたキーワードと値のリストとして、標準の ADO.NET 構文に従っています。

キーワード

Microsoft.Data.Sqlite では次の接続文字列キーワードを使用できます。

Data Source

データベース ファイルのパス。 DataSource (スペースなし) と Filename はこのキーワードの別名です。

SQLite では、パスは現在の作業ディレクトリからの相対パスとして扱われます。 絶対パスも指定できます。

の場合、一時的なディスク上のデータベースが作成されます。このデータベースは接続が閉じられるときに削除されます。

:memory: の場合、インメモリ データベースが使用されます。 詳細については、「インメモリ データベース」を参照してください。

|DataDirectory| 置換文字列で始まるパスは、相対パスと同じように扱われます。 設定すると、パスは DataDirectory アプリケーション ドメイン プロパティ値を基準とした相対パスになります。

このキーワードでは、URI ファイル名もサポートされます。

モード

接続モード。

[値] 説明
ReadWriteCreate 読み取りと書き込みを行うデータベースを開きます。データベースが存在しない場合は作成します。 既定値です。
ReadWrite 読み取りと書き込みを行うデータベースを開きます。
ReadOnly データベースを読み取り専用モードで開きます。
メモリ インメモリ データベースを開きます。

キャッシュ

接続で使用されるキャッシュ モード。

[値] 説明
Default 基になる SQLite ライブラリの既定のモードを使用します。 既定値です。
Private 各接続で、プライベート キャッシュを使用します。
Shared 接続でキャッシュを共有します。 このモードでは、トランザクションとテーブル ロックの動作が変更される場合があります。

パスワード

暗号化キー。 指定した場合、接続を開いた直後に PRAGMA key が送信されます。

警告

暗号化がネイティブ SQLite ライブラリでサポートされていない場合、パスワードの効果はありません。

注意

パスワード キーワードは、バージョン 3.0 で追加されました。

外部キー

外部キー制約を有効にするかどうかを示す値です。

注意

外部キー キーワードは、バージョン 3.0 で追加されました。

説明
True 接続を開いた直後に PRAGMA foreign_keys = 1 を送信します。
False 接続を開いた直後に PRAGMA foreign_keys = 0 を送信します。
(空) PRAGMA foreign_keys を送信しません。 既定値です。

e_sqlite3 の場合のように、ネイティブ SQLite ライブラリをコンパイルするために SQLITE_DEFAULT_FOREIGN_KEYS が使用された場合は、外部キーを有効にする必要はありません。

再帰トリガー

再帰トリガーを有効にするかどうかを示す値です。

注意

再帰トリガー キーワードは、バージョン 3.0 で追加されました。

説明
True 接続を開いた直後に PRAGMA recursive_triggers を送信します。
False PRAGMA recursive_triggers を送信しません。 既定値です。

[Default Timeout](既定のタイムアウト)

コマンドを実行する場合の既定のタイムアウト (秒)。 既定値は 30 です。 Command Timeout は、このキーワードの別名です。

この値は DefaultTimeout を使用してオーバーライドできます。次に、それを CommandTimeout を使用してオーバーライドできます。

注意

Default Timeout キーワードは、バージョン 6.0 で追加されました。

Pooling

接続をプールするかどうかを示す値です。

注意

Pooling キーワードは、バージョン 6.0 で追加されました。

説明
True 接続はプールされます。 既定値です。
接続はプールされません。

接続文字列ビルダー

SqliteConnectionStringBuilder は、厳密に型指定された方法で接続文字列を作成する際に使用できます。 接続文字列のインジェクション攻撃を防止するためにも使用できます。

var connectionString = new SqliteConnectionStringBuilder(baseConnectionString)
{
    Mode = SqliteOpenMode.ReadWriteCreate,
    Password = password
}.ToString();

重要

Microsoft では、使用可能な最も安全な認証フローを使用することをお勧めします。 Azure SQL に接続する場合は、Azure リソースの管理 ID が推奨される認証方法です。

Basic

コンカレンシーを向上させるために共有キャッシュを使用する基本的な接続文字列。

注意事項

共有キャッシュ モードと先行書き込みログを混在させることは推奨されません。 最適なパフォーマンスを得るには、先行書き込みログを使用するようにデータベースが構成されている場合は Cache=Shared を削除します。

Data Source=Application.db;Cache=Shared

Encrypted

暗号化されたデータベース。

Data Source=Encrypted.db;Password=MyEncryptionKey

読み取り専用

アプリによって変更できない読み取り専用のデータベース。

Data Source=Reference.db;Mode=ReadOnly

メモリ内

非公開のインメモリ データベース。

Data Source=:memory:

共有可能なインメモリ

Sharable という名前で識別される、共有可能なインメモリ データベース。

Data Source=Sharable;Mode=Memory;Cache=Shared

関連項目