SqlConnection クラス
アセンブリ: System.Data (system.data.dll 内)
構文
SqlConnection オブジェクトは、SQL Server データ ソースへの一意なセッションを表します。クライアント/サーバー データベース システムでは、サーバーへのネットワーク接続に相当します。SqlConnection は、Microsoft SQL Server データベースへの接続のパフォーマンスを向上させるために、SqlDataAdapter および SqlCommand と組み合わせて使用します。すべてのサードパーティ SQL サーバー製品、および OLE DB をサポートするその他のデータ ソースでは、OleDbConnection を使用してください。
SqlConnection のインスタンスを作成すると、すべてのプロパティが初期値に設定されます。これらの初期値の一覧については、SqlConnection コンストラクタのトピックを参照してください。
SqlConnection は、適用範囲の外では開いたままになります。そのため、Close または Dispose を呼び出して、明示的に接続を閉じる必要があります。Close と Dispose の機能は同じです。接続プール値 Pooling が true または yes に設定されている場合、基になる接続は接続プールに返されます。一方、Pooling が false または no に設定されている場合、サーバーへの基になる接続は実際に閉じられます。
接続を常に閉じた状態にしておくには、次のコード片に示すように、using ブロックの内部で接続を開きます。こうすることによって、ブロックの処理が終了したときに自動的に接続が閉じられます。
Using connection As New SqlConnection(connectionString) connection.Open() ' Do work here; connection closed on following line. End Using using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); // Do work here; connection closed on following line. }
メモ |
---|
パフォーマンスの高いアプリケーションを配置するには、接続プールを使用する必要があります。.NET Framework SQL Server 用データ プロバイダを使用するときは、プロバイダが接続プールを自動的に管理するため、接続プールを有効にする必要はありません。ただし、その場合でも、一部の設定は変更できます。詳細については、「接続プールの使用」を参照してください。 |
SqlCommand を実行するメソッドが SqlException を生成した場合、重大度レベルが 19 以下のときは、SqlConnection は開いたままになります。重大度レベルが 20 以上のときは、通常、サーバーは SqlConnection を閉じます。ただし、ユーザーは接続を再び開いて、処理を継続できます。
SqlConnection オブジェクトのインスタンスを作成するアプリケーションは、宣言セキュリティまたは強制セキュリティの要求を設定することによって、直接的または間接的な呼び出し元すべてに対して、コードへの適切なアクセス許可を要求できます。SqlConnection は、SqlClientPermission オブジェクトを使用して、セキュリティ要求を作成します。ユーザーは、SqlClientPermissionAttribute オブジェクトを使用して、コードに適切なアクセス許可が設定されているかどうかを確認できます。また、ユーザーおよび管理者は、コード アクセス セキュリティ ポリシー ツール (Caspol.exe) を使用して、コンピュータ、ユーザー、エンタープライズの各レベルでセキュリティ ポリシーを変更できます。詳細については、「.NET Framework におけるセキュリティ」を参照してください。セキュリティ確認要求の使用方法を示す例については、「コード アクセス セキュリティと ADO.NET」を参照してください。
メモ |
---|
Microsoft .NET Framework Version 1.0 をご使用の場合、Open を使用して SQL Server に接続するためには、名前付きのアクセス許可セット FullTrust が必要です。.NET Framework Version 1.1 以降をご使用の場合、その必要はありません。詳細については、アクセス許可の要求、名前付きアクセス許可セット の各トピックを参照してください。 |
サーバーから受け取る警告メッセージと情報メッセージの処理の詳細については、「接続イベントの使用」を参照してください。
SqlCommand および SqlConnection を作成する例を次に示します。SqlConnection が開かれ、SqlCommand 用の Connection として設定されます。この例では、次に、ExecuteNonQuery を呼び出し、接続を閉じます。そのために、接続文字列と、Transact-SQL INSERT ステートメントであるクエリ文字列を ExecuteNonQuery に渡します。
Private Sub OpenSqlConnection() Dim connectionString As String = GetConnectionString() Using connection As New SqlConnection(connectionString) connection.Open() Console.WriteLine("ServerVersion: {0}", connection.ServerVersion) Console.WriteLine("State: {0}", connection.State) End Using End Sub Private Function GetConnectionString() As String ' To avoid storing the connection string in your code, ' you can retrieve it from a configuration file, using the ' System.Configuration.ConfigurationSettings.AppSettings property Return "Data Source=(local);Database=AdventureWorks;" _ & "Integrated Security=SSPI;" End Function
private static void OpenSqlConnection() { string connectionString = GetConnectionString(); using (SqlConnection connection = new SqlConnection(connectionString)) { connection.Open(); Console.WriteLine("ServerVersion: {0}", connection.ServerVersion); Console.WriteLine("State: {0}", connection.State); } } static private string GetConnectionString() { // To avoid storing the connection string in your code, // you can retrieve it from a configuration file, using the // System.Configuration.ConfigurationSettings.AppSettings property return "Data Source=(local);Initial Catalog=AdventureWorks;" + "Integrated Security=SSPI;"; }
System.MarshalByRefObject
System.ComponentModel.Component
System.Data.Common.DbConnection
System.Data.SqlClient.SqlConnection
プラットフォーム
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。
参照
- SqlConnection クラスのページへのリンク