接続の確立 (ADO.NET)

更新 : November 2007

Microsoft SQL Server 7.0 以降に接続する場合は、.NET Framework Data Provider for SQL Server の SqlConnection オブジェクトを使用します。OLE DB データ ソースに接続する場合、または Microsoft SQL Server 6.x 以降に接続する場合は、.NET Framework Data Provider for OLE DB の OleDbConnection オブジェクトを使用します。ODBC データ ソースに接続する場合は、.NET Framework Data Provider for ODBC の OdbcConnection オブジェクトを使用します。Oracle データ ソースに接続する場合は、.NET Framework Data Provider for Oracle の OracleConnection オブジェクトを使用します。安全な接続文字列の格納および取得については、「接続情報の保護 (ADO.NET)」を参照してください。

接続の終了

接続がプールに返されるようにするために、接続を使い終えたら必ず接続を終了することをお勧めします。Visual Basic または C# の Using ブロックは、コードがこのブロックを終了したときに接続を破棄します。これは、未処理の例外の場合でも実行されます。詳細については、「using ステートメント (C# リファレンス)」および「Using ステートメント (Visual Basic)」を参照してください。

また、使用しているプロバイダの接続オブジェクトの Close または Dispose メソッドを使用することもできます。明示的に終了されていない接続は、プールに追加したり返したりすることができないことがあります。たとえば、スコープ外に出ても、明示的に終了されていない接続は、最大プール サイズに達した時点でその接続がまだ有効である場合にだけ接続プールに返されます。詳細については、「OLE DB、ODBC、および Oracle 接続プール (ADO.NET)」を参照してください。

ms254507.alert_note(ja-jp,VS.90).gifメモ :

クラスの Finalize メソッド内で ConnectionDataReader、またはその他のマネージ オブジェクトの Close または Dispose を呼び出さないでください。終了処理では、クラスに直接所有されているアンマネージ リソースだけを解放してください。クラスがアンマネージ リソースを所有していない場合は、クラス定義に Finalize メソッドを含めないでください。詳細については、「ガベージ コレクション」を参照してください。

ms254507.alert_note(ja-jp,VS.90).gifメモ :

接続が接続プールからフェッチされたり接続プールに返されたりしたとき、ログイン イベントとログアウト イベントはサーバーで発生しません。これは、接続プールに返されても接続は実際には終了していないためです。詳細については、「SQL Server の接続プール (ADO.NET)」を参照してください。

SQL Server への接続

.NET Framework Data Provider for SQL Server は、OLE DB (ADO) 接続文字列フォーマットに似た接続文字列フォーマットをサポートします。有効な文字列フォーマットの名前および値については、SqlConnection オブジェクトの ConnectionString プロパティを参照してください。また、SqlConnectionStringBuilder クラスを使用すると、構文的に正しい接続文字列を実行時に作成できます。詳細については、「接続文字列ビルダ (ADO.NET)」を参照してください。

SQL Server 7.0 以降のデータベースへの接続を開いて確立する方法を次のサンプル コードに示します。

' Assumes connectionString is a valid connection string.
Using connection As New SqlConnection(connectionString)
    connection.Open()
    ' Do work here.
End Using
// Assumes connectionString is a valid connection string.
using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    // Do work here.
}

統合セキュリティと ASP.NET

SQL Server 統合セキュリティ (信頼関係接続とも呼ばれます) は、SQL Server への接続を保護します。接続文字列でユーザー ID とパスワードを公開することがなく、接続の認証用に推奨されている方法でもあるためです。統合セキュリティでは、実行中のプロセスの現在のセキュリティ ID またはトークンを使用します。これは、デスクトップ アプリケーションでは通常、現在ログオンしているユーザーの ID です。

ASP.NET アプリケーションのセキュリティ ID は、他のオプションのうちのいずれかに設定することもできます。SQL Server に接続するときに ASP.NET アプリケーションが使用するセキュリティ ID の詳細については、「ASP.NET の偽装」、「ASP.NET の認証」、および「方法 : Windows 統合セキュリティを使用して SQL Server にアクセスする」を参照してください。

OLE DB データ ソースへの接続

.NET Framework Data Provider for OLE DB は、OleDbConnection オブジェクトを通じて、OLE DB によって公開されているデータ ソースおよび Microsoft SQL Server 6.x 以前 (SQLOLEDB : OLE DB Provider for SQL Server を使用して) への接続を提供します。

.NET Framework Data Provider for OLE DB で使用される接続文字列フォーマットは ADO で使用される接続文字列フォーマットと同じですが、次の例外があります。

  • Provider キーワードは必須です。

  • URLRemote Provider、および Remote Server キーワードはサポートされていません。

OLE DB 接続文字列の詳細については、「ConnectionString」を参照してください。また、OleDbConnectionStringBuilder を使用すると、接続文字列を実行時に作成できます。

ms254507.alert_note(ja-jp,VS.90).gifメモ :

OleDbConnection オブジェクトは、OLE DB プロバイダ固有の動的プロパティの設定または取得をサポートしていません。OLE DB プロバイダに接続文字列で渡すことができるプロパティだけがサポートされています。

OLE DB データ ソースへの接続を作成し確立する方法を次のサンプル コードに示します。

' Assumes connectionString is a valid connection string.
Using connection As New OleDbConnection(connectionString)
    connection.Open()
    ' Do work here.
End Using
// Assumes connectionString is a valid connection string.
using (OleDbConnection connection = 
  new OleDbConnection(connectionString))
{
    connection.Open();
    // Do work here.
}

OleDbConnection の接続情報は、UDL (Universal Data Link) ファイルを使用して提供できますが、このファイルは使用しないでください。UDL ファイルは暗号化されないため、接続文字列をテキスト形式で表現してしまいます。UDL ファイルは、アプリケーションにとって外部ファイルをベースにしたリソースであるため、.NET Framework でセキュリティ保護できません。

ODBC データ ソースへの接続

.NET Framework Data Provider for ODBC は、OdbcConnection オブジェクトを通じて、ODBC によって公開されているデータ ソースへの接続を提供します。

.NET Framework Data Provider for ODBC で使用される接続文字列フォーマットは、できるだけ ODBC の接続文字列フォーマットと一致するようにデザインされています。ODBC データ ソース名 (DSN) を指定することもできます。OdbcConnection の詳細については、「OdbcConnection クラス」を参照してください。

ms254507.alert_note(ja-jp,VS.90).gifメモ :

.NET Framework Data Provider for ODBC は、.NET Framework 1.0 には同梱されていません。.NET Framework 1.0 を使用していて、.NET Framework Data Provider for ODBC が必要な場合は、Microsoft Web サイトからダウンロードできます。ダウンロードされた .NET Framework Data Provider for ODBC の名前空間は Microsoft.Data.Odbc です。

ODBC データ ソースへの接続を作成し確立する方法を次のサンプル コードに示します。

' Assumes connectionString is a valid connection string.
Using connection As New OdbcConnection(connectionString)
    connection.Open()
    ' Do work here.
End Using
// Assumes connectionString is a valid connection string.
using (OdbcConnection connection = 
  new OdbcConnection(connectionString))
{
    connection.Open();
    // Do work here.
}

Oracle データ ソースへの接続

.NET Framework Data Provider for Oracle は、OracleConnection オブジェクトを通じて、Oracle データ ソースへの接続を提供します。

.NET Framework Data Provider for Oracle で使用される接続文字列フォーマットは、できるだけ MSDAORA (OLE DB Provider for Oracle) の接続文字列フォーマットと一致するようにデザインされています。OracleConnection の詳細については、「OracleConnection クラス」を参照してください。

Oracle データ ソースへの接続を作成し確立する方法を次のサンプル コードに示します。

' Assumes connectionString is a valid connection string.
Using connection As New OracleConnection(connectionString)
    connection.Open()
    ' Do work here.
End Using
// Assumes connectionString is a valid connection string.
using (OracleConnection connection = 
  new OracleConnection(connectionString))
{
    connection.Open();
    // Do work here.
}
OracleConnection nwindConn = new OracleConnection("Data Source=MyOracleServer;Integrated Security=yes;");
nwindConn.Open();

参照

概念

OLE DB、ODBC、および Oracle 接続プール (ADO.NET)

その他の技術情報

データ ソースへの接続 (ADO.NET)

接続文字列 (ADO.NET)