ADO.NET での接続文字列
適用対象: .NET Framework .NET .NET Standard
接続文字列には、データ プロバイダーからデータ ソースにパラメーターとして渡す初期化情報が含まれています。 データ プロバイダーでは、DbConnection.ConnectionString プロパティの値として接続文字列を受け取ります。 プロバイダーによって接続文字列が解析されて、構文が正しいことと、キーワードがサポートされていることが確認されます。 その後、DbConnection.Open() メソッドにより、解析された接続パラメーターがデータ ソースに渡されます。 データ ソースでは、さらに検証が行われて、接続が確立されます。
接続文字列の構文
接続文字列は、キーと値パラメーターのペアをセミコロンで区切ったリストです。
keyword1=value; keyword2=value;
キーワードの大文字と小文字は区別されません。 ただし、データ ソースによっては、値の大文字小文字が区別されます。 キーワードと値はどちらも、空白文字が含まれていてもかまいません。 キーワードおよび引用符で囲まれていない値では、先頭と末尾の空白文字は無視されます。
値にセミコロン、Unicode 制御文字、先頭または末尾の空白が含まれている場合は、単一引用符または二重引用符で囲む必要があります。 次に例を示します。
Keyword=" whitespace ";
Keyword='special;character';
囲んでいる文字が、囲まれた値内に出現することはできません。 したがって、単一引用符が含まれる値は、二重引用符でのみ囲むことができます。その逆も同様です。
Keyword='double"quotation;mark';
Keyword="single'quotation;mark";
また、囲んでいる文字を 2 つ続けて使用することにより、エスケープすることもできます。
Keyword="double""quotation";
Keyword='single''quotation';
引用符自体と等号は、エスケープする必要がないため、次の接続文字列は有効です。
Keyword=no "escaping" 'required';
Keyword=a=b=c
各値は、次のセミコロンまたは文字列の末尾まで読み取られるため、後者の例の値は a=b=c
であり、最後のセミコロンは省略可能です。
すべての接続文字列の基本的な構文は、上で説明したものと同じです。 認識されるキーワードのセットは、プロバイダーによって異なります。 Microsoft SqlClient Data Provider for SQL Server では、古い API からの多くのキーワードがサポートされていますが、一般に、より柔軟であり、一般的な接続文字列キーワードの多くでシノニムを使用できます。
入力ミスによってエラーが発生する可能性があります。 たとえば、Integrated Security=true
は有効ですが、IntegratedSecurity=true
ではエラーが発生します。
無効なユーザー入力から実行時に手動で構築された接続文字列は、文字列のインジェクション攻撃に対して脆弱で、データ ソースのセキュリティが脅かされます。 これらの問題に対処するために、SqlConnectionStringBuilder クラスが作成されています。 この接続文字列ビルダーのクラスにより、厳密に型指定されたプロパティとしてパラメーターが公開され、データ ソースに送信される前に接続文字列を検証できるようになります。
このセクションの内容
接続文字列ビルダー
ConnectionStringBuilder
クラスを使用して、実行時に有効な接続文字列を作成する方法を示します。
接続文字列と構成ファイル
構成ファイルを使用した接続文字列の格納と取得の方法について説明します。
接続文字列の構文
SqlClient
用にプロバイダー固有の接続文字列を構成する方法について説明します。
接続情報の保護
データ ソースへの接続に使用する情報を保護する方法を示します。