ADO.NET での接続文字列Connection Strings in ADO.NET

接続文字列には、データ プロバイダーからデータ ソースにパラメーターとして渡す初期化情報が含まれています。A connection string contains initialization information that is passed as a parameter from a data provider to a data source. データ プロバイダーでは、DbConnection.ConnectionString プロパティの値として接続文字列を受け取ります。The data provider receives the connection string as the value of the DbConnection.ConnectionString property. プロバイダーによって接続文字列が解析されて、構文が正しいことと、キーワードがサポートされていることが確認されます。The provider parses the connection string and ensures that the syntax is correct and that the keywords are supported. その後、DbConnection.Open() メソッドにより、解析された接続パラメーターがデータ ソースに渡されます。Then the DbConnection.Open() method passes the parsed connection parameters to the data source. データ ソースでは、さらに検証が行われて、接続が確立されます。The data source performs further validation and establishes a connection.

接続文字列の構文Connection string syntax

接続文字列は、キーと値パラメーターのペアをセミコロンで区切ったリストです。A connection string is a semicolon-delimited list of key/value parameter pairs:

keyword1=value; keyword2=value;

キーワードの大文字と小文字は区別されません。Keywords are not case-sensitive. ただし、データ ソースによっては、値の大文字小文字が区別されます。Values, however, may be case-sensitive, depending on the data source. キーワードと値はどちらも、空白文字が含まれていてもかまいません。Both keywords and values may contain whitespace characters. キーワードおよび引用符で囲まれていない値では、先頭と末尾の空白文字は無視されます。Leading and trailing white space is ignored in keywords and unquoted values.

値にセミコロン、Unicode 制御文字、先頭または末尾の空白が含まれている場合は、単一引用符または二重引用符で囲む必要があります。If a value contains the semicolon, Unicode control characters, or leading or trailing white space, it must be enclosed in single or double quotation marks. 次に例を示します。For example:

Keyword=" whitespace  ";
Keyword='special;character';

囲んでいる文字が、囲まれた値内に出現することはできません。The enclosing character may not occur within the value it encloses. したがって、単一引用符が含まれる値は、二重引用符でのみ囲むことができます。その逆も同様です。Therefore, a value containing single quotation marks can be enclosed only in double quotation marks, and vice versa:

Keyword='double"quotation;mark';
Keyword="single'quotation;mark";

また、囲んでいる文字を 2 つ続けて使用することにより、エスケープすることもできます。You can also escape the enclosing character by using two of them together:

Keyword="double""quotation";
Keyword='single''quotation';

引用符自体と等号は、エスケープする必要がないため、次の接続文字列は有効です。The quotation marks themselves, as well as the equals sign, do not require escaping, so the following connection strings are valid:

Keyword=no "escaping" 'required';
Keyword=a=b=c

各値は、次のセミコロンまたは文字列の末尾まで読み取られるため、後者の例の値は a=b=c であり、最後のセミコロンは省略可能です。Since each value is read till the next semicolon or the end of string, the value in the latter example is a=b=c, and the final semicolon is optional.

すべての接続文字列の基本的な構文は、上で説明したものと同じです。All connection strings share the same basic syntax described above. ただし、認識されるキーワードのセットはプロバイダーによって異なり、ODBC などの以前の API から長年にわたって進化しています。The set of recognized keywords depends on the provider, however, and has evolved over the years from earlier APIs such as ODBC. .NET Framework Data Provider for SQL Server (SqlClient) では、古い API の多くのキーワードがサポートされていますが、一般に、より柔軟性が高く、多くの一般的な接続文字列キーワードに対してシノニムを受け付けます。The .NET Framework data provider for SQL Server (SqlClient) supports many keywords from older APIs, but is generally more flexible and accepts synonyms for many of the common connection string keywords.

入力ミスによってエラーが発生する可能性があります。Typing mistakes can cause errors. たとえば、Integrated Security=true は有効ですが、IntegratedSecurity=true ではエラーが発生します。For example, Integrated Security=true is valid, but IntegratedSecurity=true causes an error.

実行時に検証されていないユーザー入力から接続文字列を手動で構築すると、文字列のインジェクション攻撃に弱くなり、データ ソースのセキュリティが脅かされます。Connection strings constructed manually at run time from unvalidated user input are vulnerable to string-injection attacks and jeopardize security at the data source. こうした問題に対処するため、ADO.NET 2.0 では、各 .NET Framework データ プロバイダー用の接続文字列ビルダーが導入されました。To address these problems, ADO.NET 2.0 introduced connection string builders for each .NET Framework data provider. これらの接続文字列ビルダーでは、厳密に型指定されたプロパティとしてパラメーターが公開され、データ ソースに送信される前に接続文字列を検証できます。These connection string builders expose parameters as strongly typed properties, and make it possible to validate the connection string before it's sent to the data source.

このセクションの内容In This Section

接続文字列ビルダーConnection String Builders
ConnectionStringBuilder クラスを使用して、有効な接続文字列を実行時に作成する方法について説明します。Demonstrates how to use the ConnectionStringBuilder classes to construct valid connection strings at run time.

接続文字列と構成ファイルConnection Strings and Configuration Files
構成ファイルを使用した接続文字列の格納と取得の方法について説明します。Demonstrates how to store and retrieve connection strings in configuration files.

接続文字列の構文Connection String Syntax
SqlClientOracleClientOleDbOdbc の各プロバイダーに固有の接続文字列を構成する方法について説明します。Describes how to configure provider-specific connection strings for SqlClient, OracleClient, OleDb, and Odbc.

接続情報の保護Protecting Connection Information
データ ソースへの接続に使用する情報を保護する方法を示します。Demonstrates techniques for protecting information used to connect to a data source.

関連項目See also