OleDbConnection.ConnectionString プロパティ
データベースを開くために使用する文字列を取得または設定します。
Public Overridable Property ConnectionString As String Implements _ IDbConnection.ConnectionString
[C#]
public virtual string ConnectionString {get; set;}
[C++]
public: __property virtual String* get_ConnectionString();public: __property virtual void set_ConnectionString(String*);
[JScript]
public function get ConnectionString() : String;public function set ConnectionString(String);
プロパティ値
データ ソース名を含む OLE DB プロバイダ接続文字列、および初期接続を確立するために必要なその他のパラメータ。既定値は空の文字列です。
実装
IDbConnection.ConnectionString
例外
例外の種類 | 条件 |
---|---|
ArgumentException | 無効な接続文字列の引数が指定されました。または、必要な接続文字列の引数が指定されませんでした。 |
解説
ConnectionString の書式は、OLE DB 接続文字列の書式とほぼ一致していますが、次の例外があります。
- Provider = value 句が必要です。ただし、.NET Framework Data Provider for OLE では、OLE DB Provider for ODBC (MSDASQL) をサポートしていないため、Provider = MSDASQL は使用できません。ODBC データ ソースにアクセスするには、 OdbcConnection オブジェクトを使用します。このオブジェクトは、System.Data.Odbc 名前空間に存在します。
- OLE DB や ADO とは異なり、Persist Security Info を false (既定値) に設定すると、ユーザーが設定した ConnectionString からセキュリティ情報を除いた接続文字列が返されます。Persist Security Info キーワードを true に設定した場合 (お勧めしません) を除き、.NET Framework Data Provider for OLE DB では、接続文字列のパスワードは永続化されず、返されません。高度なセキュリティ レベルを維持するためには、Persist Security Info を false に設定して、Integrated Security キーワードを使用することをお勧めします。
ConnectionString プロパティを使用すると、Microsoft Data Link (UDL) など、さまざまなデータ ソースに接続できます。接続文字列の例を次に示します。
"Provider=MSDAORA; Data Source=ORACLE8i7;Persist Security Info=False;Integrated Security=yes"
"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=c:\bin\LocalAccess40.mdb"
"Provider=SQLOLEDB;Data Source=MySQLServer;Integrated Security=SSPI"
ConnectionString プロパティを設定できるのは、接続が閉じているときだけです。接続文字列値の多くには、対応する読み取り専用プロパティがあります。接続文字列を設定すると、エラーが検出された場合を除いて、これらのプロパティがすべて更新されます。エラーが発生した場合は、いずれのプロパティも更新されません。 OleDbConnection プロパティは、 ConnectionString に含まれている設定だけを返します。
閉じた接続に対して ConnectionString をリセットすると、パスワードを含むすべての接続文字列値および関連プロパティがリセットされます。たとえば、Initial Catalog= northwind を指定した接続文字列を設定した後で、この接続文字列を Provider= SQLOLEDB;Data Source= MySQLServer;IntegratedSecurity=SSPI にリセットすると、 Database プロパティは northwind に設定されません。(接続文字列の Initial Catalog 値は、Database プロパティに対応します)。
プロパティの設定時には、接続文字列に対して予備的な検証が実行されます。文字列に、Provider、Connect Timeout、Persist Security Info、または OLE DB Services の値が含まれている場合は、これらの値が確認されます。アプリケーションが Open メソッドを呼び出したときは、接続文字列が完全に検証されます。接続文字列に無効なプロパティまたはサポートされないプロパティが含まれている場合は、実行時に、 ArgumentException などのランタイム例外が発生します。
接続文字列の基本的な書式は、一連のキーワード/値のペアをセミコロンで区切った形となります。等号記号 (=) は、各キーワードとその値を結合します。セミコロン、単一引用符文字、または二重引用符文字を含む値を指定するには、二重引用符で値を囲む必要があります。セミコロンと二重引用符の両方が値に含まれている場合は、単一引用符を使用して値を囲むことができます。単一引用符は、値の先頭が二重引用符文字の場合にも、使用できます。逆に、値の先頭が単一引用符の場合は、二重引用符を使用できます。単一引用符と二重引用符の両方が値に含まれている場合、値を囲むために使用する引用符文字は、値の中ですべて 2 つずつ使用する必要があります。
文字列値の先頭または末尾の空白を含めるには、単一引用符または二重引用符で値を囲む必要があります。整数値、ブール値、列挙値の先頭または末尾の空白は、引用符で囲んでも無視されます。ただし、リテラル キーワード文字列や文字列値内の空白は、予約済みです。単一引用符または二重引用符は、引用符が値の先頭または末尾の文字でない限り、接続文字列内で区切り文字を付けずに使用できます (たとえば、Data Source= my'Server、または Data Source= my"Server など)。
キーワードまたは値の中で等号記号 (=) を使用する場合は、等号記号を 2 つ記述する必要があります。たとえば、次のような接続文字列がある場合、
"key==word=value"
キーワードは "key=word" で値は "value" です。
キーワード = 値のペアで特定のキーワードが接続文字列の中に複数回出現する場合、値セットでは最後のペアが使用されます。
キーワードの大文字と小文字は区別されません。
UDL を参照するには、File Name = myfile.udl の書式で、UDL への参照を ConnectionString に追加します。接続文字列に複数の UDL が指定されている場合は、最後に出現する UDL だけが読み込まれます。UDL を指定し、続いて OleDbConnection オブジェクトを呼び出して ConnectionString を取得すると、 ConnectionString には、ファイルの内容ではなく、UDL ファイルへの参照が含まれます。UDL を指定した接続文字列は、 OleDbConnection を開くたびに解析されます。これは、パフォーマンスに影響を与えることがあるため、 ConnectionString では UDL を参照しないことをお勧めします。
注意 このリリースでは、ユーザー入力に基づいて接続文字列を構築する場合は、アプリケーションで注意が必要です。たとえば、ダイアログ ボックスからユーザー ID およびパスワード情報を取得し、接続文字列に追加する場合などです。アプリケーションでは、ユーザーが不要な接続文字列パラメータを入力値に埋め込むことができないようにする必要があります。たとえば、ユーザーが、別のデータベースに接続しようとして、パスワードに「validpassword;database=somedb」などと入力できないようにする必要があります。OLE DB 接続に Extended Properties 接続文字列パラメータを使用する場合、ユーザー ID とパスワードを渡さないようにしてください。既定値である Persist Security Info= false は、Extended Properties パラメータには適用されないため、ユーザー ID とパスワードがテキストで格納されてしまわないように (それが可能である場合) するためです。
使用例
[Visual Basic, C#, C++] OleDbConnection を作成し、そのプロパティの一部を接続文字列に設定する例を次に示します。
Public Sub CreateOleDbConnection()
Dim myConnString As String = _
"Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;"
Dim myConnection As New OleDbConnection(myConnString)
myConnection.Open()
MessageBox.Show("ServerVersion: " + myConnection.ServerVersion _
+ ControlChars.NewLine + "DataSource: " + myConnection.DataSource)
myConnection.Close()
End Sub
[C#]
public void CreateOleDbConnection()
{
string myConnString = "Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;";
OleDbConnection myConnection = new OleDbConnection(myConnString);
myConnection.Open();
MessageBox.Show("ServerVersion: " + myConnection.ServerVersion
+ "\nDataSource: " + myConnection.DataSource);
myConnection.Close();
}
[C++]
public:
void CreateOleDbConnection()
{
String* myConnString = S"Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=Northwind;Integrated Security=SSPI;";
OleDbConnection* myConnection = new OleDbConnection(myConnString);
myConnection->Open();
MessageBox::Show(String::Format( S"ServerVersion: {0}\nDataSource: {1}", myConnection->ServerVersion, myConnection->DataSource ));
myConnection->Close();
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
OleDbConnection クラス | OleDbConnection メンバ | System.Data.OleDb 名前空間