SqlConnection クラス

定義

SQL Server データベースへの接続を表します。 このクラスは継承できません。

public ref class SqlConnection sealed : System::ComponentModel::Component, ICloneable, IDisposable, System::Data::IDbConnection
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.ComponentModel.Component, ICloneable, IDisposable, System.Data.IDbConnection
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
    inherit Component
    interface IDbConnection
    interface IDisposable
    interface ICloneable
type SqlConnection = class
    inherit DbConnection
    interface ICloneable
Public NotInheritable Class SqlConnection
Inherits Component
Implements ICloneable, IDbConnection, IDisposable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
継承
継承
実装

次の例では、 SqlCommandSqlConnectionを作成します。 SqlConnectionが開き、ConnectionSqlCommandとして設定されます。 次に、 ExecuteNonQueryを呼び出します。 これを実現するために、ExecuteNonQuery には SqlConnection と、Transact-SQL INSERT ステートメントであるクエリ文字列が渡されます。 コードが using ブロックを終了すると、接続は自動的に閉じられます。

private static void CreateCommand(string queryString,
    string connectionString)
{
    using (SqlConnection connection = new SqlConnection(
               connectionString))
    {
        SqlCommand command = new SqlCommand(queryString, connection);
        command.Connection.Open();
        command.ExecuteNonQuery();
    }
}
Public Sub CreateCommand(ByVal queryString As String, _
  ByVal connectionString As String)
    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        command.Connection.Open()
        command.ExecuteNonQuery()
    End Using
End Sub

注釈

SqlConnection オブジェクトは、SQL Server データ ソースへの一意のセッションを表します。 クライアント/サーバー データベース システムでは、サーバーへのネットワーク接続と同等です。 SqlConnection は、Microsoft SQL Server データベースに接続するときにパフォーマンスを向上させるために、SqlDataAdapter および SqlCommand と共に使用されます。 サードパーティ製のSQL Server製品およびその他の OLE DB でサポートされているすべてのデータ ソースについては、OleDbConnection を使用します。

SqlConnectionのインスタンスを作成すると、すべてのプロパティが初期値に設定されます。 これらの値の一覧については、 SqlConnection コンストラクターを参照してください。

接続文字列内のキーワードの一覧については、「ConnectionString」を参照してください。

SqlConnectionがスコープ外になった場合、閉じられません。 そのため、 Close または Disposeを呼び出して、接続を明示的に閉じる必要があります。 CloseDispose は機能的に同等です。 接続プールの値 Poolingtrue または yesに設定されている場合は、基になる接続が接続プールに返されます。 一方、 Poolingfalse または no に設定されている場合、基になるサーバーへの接続は実際に閉じられます。

Note

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

接続が常に閉じられるようにするには、次のコード フラグメントに示すように、 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.
    }

Note

高パフォーマンスのアプリケーションをデプロイするには、接続プールを使用する必要があります。 SQL Serverに .NET Framework Data Providerを使用する場合、一部の設定は変更できますが、プロバイダーはこれを自動的に管理するため、接続プールを有効にする必要はありません。 詳しくは、「SQL Server の接続プール (ADO.NET)」をご覧ください。

SqlExceptionを実行するメソッドによってSqlCommandが生成された場合、重大度レベルが 19 以下の場合、SqlConnectionは開いたままです。 重大度レベルが 20 以上の場合、サーバーは通常、 SqlConnectionを閉じます。 ただし、ユーザーは接続を再度開いて続行できます。

SqlConnection オブジェクトのインスタンスを作成するアプリケーションでは、宣言型または命令型のセキュリティ要求を設定することで、すべての直接呼び出し元と間接呼び出し元がコードに対する十分なアクセス許可を持つ必要があります。 SqlConnection は、 SqlClientPermission オブジェクトを使用してセキュリティ要求を行います。 ユーザーは、 SqlClientPermissionAttribute オブジェクトを使用して、コードに十分なアクセス許可があることを確認できます。 ユーザーと管理者は 、Caspol.exe (コード アクセス セキュリティ ポリシー ツール) を使用して、コンピューター、ユーザー、およびエンタープライズ レベルでセキュリティ ポリシーを変更することもできます。 詳細については、「 .NET のセキュリティ」を参照してください。 セキュリティ要求の使用方法を示す例については、「 コード アクセス セキュリティと ADO.NET」を参照してください。

サーバーからの警告メッセージと情報メッセージの処理の詳細については、「 接続イベント」を参照してください。 SQL Server エンジンのエラーとエラー メッセージの詳細については、「データベース エンジン イベントとエラーを参照してください。

Caution

共有メモリの代わりに TCP を強制できます。 これを行うには、tcp: の前に接続文字列のサーバー名を付けるか、localhost を使用します。

コンストラクター

名前 説明
SqlConnection()

SqlConnection クラスの新しいインスタンスを初期化します。

SqlConnection(String, SqlCredential)

SqlConnectionとユーザー ID とパスワードを含むIntegrated Security = true オブジェクトを使用しない接続文字列を指定して、SqlCredential クラスの新しいインスタンスを初期化します。

SqlConnection(String)

接続文字列を含む文字列が指定されたときに、 SqlConnection クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
AccessToken

接続のアクセス トークンを取得または設定します。

CanRaiseEvents

コンポーネントがイベントを発生できるかどうかを示す値を取得します。

(継承元 Component)
ClientConnectionId

試行が成功したか失敗したかに関係なく、最新の接続試行の接続 ID。

ColumnEncryptionKeyCacheTtl

Always Encrypted 機能の列暗号化キー キャッシュ内の列暗号化キー エントリの有効期間を取得または設定します。 既定値は 2 時間です。 0 はキャッシュがないことを意味します。

ColumnEncryptionQueryMetadataCacheEnabled

Always Encrypted 対応データベースに対して実行されるパラメーター化クエリに対してクエリ メタデータ キャッシュが有効 (true) か無効 (false) かを示す値を取得または設定します。 既定値は、true です。

ColumnEncryptionTrustedMasterKeyPaths

データベース サーバーの信頼されたキー パスの一覧を設定できます。 アプリケーション クエリの処理中に、ドライバーが一覧にないキー パスを受け取った場合、クエリは失敗します。 このプロパティは、セキュリティ侵害されたSQL Serverが偽のキー パスを提供するセキュリティ攻撃に対する追加の保護を提供します。これにより、キー ストアの資格情報が漏洩する可能性があります。

ConnectionString

SQL Server データベースを開くために使用する文字列を取得または設定します。

ConnectionTimeout

試行を終了してエラーを生成する前に接続を確立しようとしたときに待機する時間 (秒単位) を取得します。

Container

IContainerを含むComponentを取得します。

(継承元 Component)
Credential

この接続の SqlCredential オブジェクトを取得または設定します。

Database

接続を開いた後に使用する現在のデータベースまたはデータベースの名前を取得します。

DataSource

接続する SQL Server のインスタンスの名前を取得します。

DbProviderFactory

このDbProviderFactoryDbConnectionを取得します。

(継承元 DbConnection)
DesignMode

Componentが現在デザイン モードであるかどうかを示す値を取得します。

(継承元 Component)
Events

この Componentにアタッチされているイベント ハンドラーの一覧を取得します。

(継承元 Component)
FireInfoMessageEventOnUserErrors

FireInfoMessageEventOnUserErrors プロパティを取得または設定します。

PacketSize

SQL Serverのインスタンスとの通信に使用されるネットワーク パケットのサイズ (バイト単位) を取得します。

ServerVersion

クライアントが接続されている SQL Server のインスタンスのバージョンを含む文字列を取得します。

Site

ISiteComponentを取得または設定します。

(継承元 Component)
State

接続で実行された最新のネットワーク操作中の SqlConnection の状態を示します。

StatisticsEnabled

trueに設定すると、現在の接続の統計収集が有効になります。

WorkstationId

データベース クライアントを識別する文字列を取得します。

メソッド

名前 説明
BeginDbTransaction(IsolationLevel)

派生クラスでオーバーライドされると、データベース トランザクションを開始します。

(継承元 DbConnection)
BeginTransaction()

データベース トランザクションを開始します。

BeginTransaction(IsolationLevel, String)

分離レベルとトランザクション名を指定してデータベース トランザクションを開始します。

BeginTransaction(IsolationLevel)

指定した分離レベルでデータベース トランザクションを開始します。

BeginTransaction(String)

指定したトランザクション名でデータベース トランザクションを開始します。

ChangeDatabase(String)

開いている SqlConnectionの現在のデータベースを変更します。

ChangePassword(String, SqlCredential, SecureString)

SqlCredential オブジェクトに示されているユーザーの SQL Server パスワードを変更します。

ChangePassword(String, String)

接続文字列に示されているユーザーの SQL Server パスワードを、指定した新しいパスワードに変更します。

ClearAllPools()

接続プールを空にします。

ClearPool(SqlConnection)

指定した接続に関連付けられている接続プールを空にします。

Close()

データベースへの接続を閉じます。 これは、開いている接続を閉じる場合に推奨される方法です。

CreateCommand()

SqlCommandに関連付けられたSqlConnection オブジェクトを作成して返します。

CreateDbCommand()

派生クラスでオーバーライドされると、現在の接続に関連付けられている DbCommand オブジェクトを作成して返します。

(継承元 DbConnection)
CreateObjRef(Type)

リモート オブジェクトとの通信に使用されるプロキシの生成に必要なすべての関連情報を含むオブジェクトを作成します。

(継承元 MarshalByRefObject)
Dispose()

Componentによって使用されるすべてのリソースを解放します。

(継承元 Component)
Dispose(Boolean)

Componentによって使用されるアンマネージ リソースを解放し、必要に応じてマネージド リソースを解放します。

(継承元 Component)
EnlistDistributedTransaction(ITransaction)

指定したトランザクションに分散トランザクションとして参加させます。

EnlistTransaction(Transaction)

指定したトランザクションに分散トランザクションとして参加させます。

Equals(Object)

指定したオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetLifetimeService()

このインスタンスの有効期間ポリシーを制御する現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetSchema()

この SqlConnectionのデータ ソースのスキーマ情報を返します。 スキームの詳細については、「SQL Server Schema Collections」を参照してください。

GetSchema(String, String[])

この SqlConnection のデータ ソースのスキーマ情報を返します。スキーマ名には指定した文字列を使用し、制限値には指定した文字列配列を使用します。

GetSchema(String)

スキーマ名に指定した文字列を使用して、この SqlConnection のデータ ソースのスキーマ情報を返します。

GetService(Type)

ComponentまたはそのContainerによって提供されるサービスを表すオブジェクトを返します。

(継承元 Component)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
MemberwiseClone()

現在の Objectの簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
OnStateChange(StateChangeEventArgs)

StateChange イベントを発生させます。

(継承元 DbConnection)
Open()

ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。

OpenAsync()

Open()の非同期バージョン。ConnectionStringで指定された設定を使用してデータベース接続を開きます。 このメソッドは、CancellationToken.None で OpenAsync(CancellationToken) 仮想メソッドを呼び出します。

(継承元 DbConnection)
OpenAsync(CancellationToken)

Open()の非同期バージョン。ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。 キャンセル トークンを使用して、接続タイムアウトが経過する前に操作を破棄するように要求できます。 例外は、返されたタスクを介して伝達されます。 正常に接続せずに接続タイムアウト時間が経過すると、返されたタスクは例外でエラーとしてマークされます。 この実装は、プールされた接続とプールされていない接続の両方の呼び出し元スレッドをブロックせずに Task を返します。

RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>)

列暗号化キー ストア プロバイダーを登録します。

ResetStatistics()

統計収集が有効になっている場合、すべての値がゼロにリセットされます。

RetrieveStatistics()

メソッドが呼び出された時点での統計の名前と値のペアのコレクションを返します。

ToString()

Stringの名前 (存在する場合) を含むComponentを返します。 このメソッドはオーバーライドしないでください。

(継承元 Component)

イベント

名前 説明
Disposed

コンポーネントが Dispose() メソッドの呼び出しによって破棄されるときに発生します。

(継承元 Component)
InfoMessage

SQL Serverが警告または情報メッセージを返したときに発生します。

StateChange

接続の状態が変更されたときに発生します。

StateChange

接続の状態が変更されたときに発生します。

(継承元 DbConnection)

明示的なインターフェイスの実装

名前 説明
ICloneable.Clone()

現在のインスタンスのコピーである新しいオブジェクトを作成します。

IDbConnection.BeginTransaction()

データベース トランザクションを開始します。

IDbConnection.BeginTransaction()

データベース トランザクションを開始します。

(継承元 DbConnection)
IDbConnection.BeginTransaction(IsolationLevel)

指定した IsolationLevel 値でデータベース トランザクションを開始します。

IDbConnection.BeginTransaction(IsolationLevel)

指定した分離レベルでデータベース トランザクションを開始します。

(継承元 DbConnection)
IDbConnection.CreateCommand()

接続に関連付けられている Command オブジェクトを作成して返します。

IDbConnection.CreateCommand()

現在の接続に関連付けられている DbCommand オブジェクトを作成して返します。

(継承元 DbConnection)

適用対象

こちらもご覧ください