SqlConnection クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
SQL Server データベースへの接続を表します。 このクラスは継承できません。
public ref class SqlConnection sealed : System::Data::Common::DbConnection, ICloneable
public sealed class SqlConnection : System.Data.Common.DbConnection, ICloneable
type SqlConnection = class
inherit DbConnection
interface ICloneable
Public NotInheritable Class SqlConnection
Inherits DbConnection
Implements ICloneable
- 継承
-
SqlConnection
- 実装
例
次の例では、 SqlCommand と SqlConnectionを作成します。 SqlConnectionが開き、ConnectionのSqlCommandとして設定されます。 次に、 ExecuteNonQueryを呼び出します。 これを実現するために、ExecuteNonQuery には SqlConnection と、Transact-SQL INSERT ステートメントであるクエリ文字列が渡されます。 コードが using ブロックを終了すると、接続は自動的に閉じられます。
using System;
using System.Data;
using Microsoft.Data.SqlClient;
namespace SqlCommand_ExecuteNonQuery
{
class Program
{
static void Main()
{
string str = "Data Source=(local);Initial Catalog=Northwind;"
+ "Integrated Security=SSPI";
string qs = "SELECT OrderID, CustomerID FROM dbo.Orders;";
CreateCommand(qs, str);
}
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();
}
}
}
}
注釈
SqlConnection オブジェクトは、SQL Server データ ソースへの一意のセッションを表します。 クライアント/サーバー データベース システムでは、サーバーへのネットワーク接続と同等です。 SqlConnection は、Microsoft SQL Server データベースに接続するときにパフォーマンスを向上させるために、SqlDataAdapter および SqlCommand と共に使用されます。 サードパーティ製のSQL Server製品およびその他の OLE DB でサポートされているすべてのデータ ソースについては、OleDbConnection を使用します。
SqlConnectionのインスタンスを作成すると、すべてのプロパティが初期値に設定されます。 これらの値の一覧については、 SqlConnection コンストラクターを参照してください。
接続文字列内のキーワードの一覧については、「ConnectionString」を参照してください。
SqlConnectionがスコープ外になった場合、閉じられません。 そのため、 Close または Disposeを呼び出して、接続を明示的に閉じる必要があります。
Close と Dispose は機能的に同等です。 接続プールの値 Pooling が true または yesに設定されている場合は、基になる接続が接続プールに返されます。 一方、 Pooling が false または 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 エンジンのエラーとエラー メッセージの詳細については、「データベース エンジン イベントとエラーを参照してください。
注意
共有メモリの代わりに TCP を強制できます。 これを行うには、tcp: の前に接続文字列のサーバー名を付けるか、localhost を使用します。
コンストラクター
| 名前 | 説明 |
|---|---|
| SqlConnection() |
SqlConnection クラスの新しいインスタンスを初期化します。 |
| SqlConnection(String, SqlCredential) |
SqlConnectionとユーザー ID とパスワードを含む |
| SqlConnection(String) |
接続文字列を含む文字列が指定されたときに、 SqlConnection クラスの新しいインスタンスを初期化します。 |
プロパティ
| 名前 | 説明 |
|---|---|
| AccessToken |
接続のアクセス トークンを取得または設定します。 |
| AccessTokenCallback |
接続のアクセス トークン コールバックを取得または設定します。 |
| CanCreateBatch |
この SqlConnection インスタンスが DbBatch クラスをサポートしているかどうかを示す値を取得します。 |
| ClientConnectionId |
試行が成功したか失敗したかに関係なく、最新の接続試行の接続 ID。 |
| ColumnEncryptionKeyCacheTtl |
Always Encrypted 機能の列暗号化キー キャッシュ内の列暗号化キー エントリの有効期間を取得または設定します。 既定値は 2 時間です。 0 はキャッシュがないことを意味します。 |
| ColumnEncryptionQueryMetadataCacheEnabled |
Always Encrypted 対応データベースに対して実行されるパラメーター化クエリに対してクエリ メタデータ キャッシュが有効 (true) か無効 (false) かを示す値を取得または設定します。 既定値は、true です。 |
| ColumnEncryptionTrustedMasterKeyPaths |
データベース サーバーの信頼されたキー パスの一覧を設定できます。 アプリケーション クエリの処理中に、ドライバーが一覧にないキー パスを受け取った場合、クエリは失敗します。 このプロパティは、セキュリティ侵害されたSQL Serverが偽のキー パスを提供するセキュリティ攻撃に対する追加の保護を提供します。これにより、キー ストアの資格情報が漏洩する可能性があります。 |
| CommandTimeout |
コマンドの実行試行を終了してエラーを生成するまでの既定の待機時間 (秒単位) を取得します。 既定値は 30 秒です。 |
| ConnectionString |
SQL Server データベースを開くために使用する文字列を取得または設定します。 |
| ConnectionTimeout |
接続を確立してから試行を終了し、エラーを生成するまでの待機時間を取得します。 |
| Credential |
この接続の SqlCredential オブジェクトを取得または設定します。 |
| Database |
接続を開いた後に使用する現在のデータベースまたはデータベースの名前を取得します。 |
| DataSource |
接続する SQL Server のインスタンスの名前を取得します。 |
| FireInfoMessageEventOnUserErrors |
FireInfoMessageEventOnUserErrors プロパティを取得または設定します。 |
| PacketSize |
SQL Serverのインスタンスとの通信に使用されるネットワーク パケットのサイズ (バイト単位) を取得します。 |
| RetryLogicProvider |
このコマンドにバインドされた SqlRetryLogicBaseProvider オブジェクトを指定する値を取得または設定します。 |
| ServerProcessId |
アクティブな接続のサーバー プロセス ID (SPID) を取得します。 |
| ServerVersion |
クライアントが接続されている SQL Server のインスタンスのバージョンを含む文字列を取得します。 |
| SspiContextProvider |
SSPI コンテキストをカスタマイズするための SspiContextProvider インスタンスを取得または設定します。 設定されていない場合は、プラットフォームの既定値が使用されます。 |
| State |
接続で実行された最新のネットワーク操作中の SqlConnection の状態を示します。 |
| StatisticsEnabled |
|
| WorkstationId |
データベース クライアントを識別する文字列を取得します。 |
メソッド
| 名前 | 説明 |
|---|---|
| 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() |
SqlConnectionに関連付けられたSqlCommand オブジェクトを作成して返します。 |
| EnlistDistributedTransaction(ITransaction) |
指定したトランザクションに分散トランザクションとして参加させます。 |
| EnlistTransaction(Transaction) |
指定したトランザクションに分散トランザクションとして参加させます。 |
| GetSchema() |
この SqlConnectionのデータ ソースのスキーマ情報を返します。 スキームの詳細については、「SQL Server Schema Collections」を参照してください。 |
| GetSchema(String, String[]) |
この SqlConnection のデータ ソースのスキーマ情報を返します。スキーマ名には指定した文字列を使用し、制限値には指定した文字列配列を使用します。 |
| GetSchema(String) |
スキーマ名に指定した文字列を使用して、この SqlConnection のデータ ソースのスキーマ情報を返します。 |
| Open() |
ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。 |
| Open(SqlConnectionOverrides) |
ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。 |
| OpenAsync(CancellationToken) |
Open()の非同期バージョン。ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。 キャンセル トークンを使用して、接続タイムアウトが経過する前に操作を破棄するように要求できます。 例外は、返されたタスクを介して伝達されます。 正常に接続せずに接続タイムアウト時間が経過すると、返されたタスクは例外でエラーとしてマークされます。 この実装は、プールされた接続とプールされていない接続の両方の呼び出し元スレッドをブロックせずに Task を返します。 |
| OpenAsync(SqlConnectionOverrides, CancellationToken) |
Open()の非同期バージョン。ConnectionStringで指定されたプロパティ設定を使用してデータベース接続を開きます。 キャンセル トークンを使用して、接続タイムアウトが経過する前に操作を破棄するように要求できます。 例外は、返されたタスクを介して伝達されます。 正常に接続せずに接続タイムアウト時間が経過すると、返されたタスクは例外でエラーとしてマークされます。 この実装は、プールされた接続とプールされていない接続の両方の呼び出し元スレッドをブロックせずに Task を返します。 |
| RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
列暗号化キー ストア プロバイダーを登録します。 この関数は、アプリで 1 回だけ呼び出す必要があります。 これにより、ディクショナリの簡易コピーが行われ、設定後にアプリでカスタム プロバイダー リストを変更できなくなります。 Windows Certificate Store、CNG Store、CSP に使用できる組み込みの列マスター キー ストア プロバイダーは、事前登録されています。 |
| RegisterColumnEncryptionKeyStoreProvidersOnConnection(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) |
SqlConnection インスタンスに暗号化キー ストア プロバイダーを登録します。 この関数が呼び出された場合、静的 RegisterColumnEncryptionKeyStoreProviders(IDictionary<String,SqlColumnEncryptionKeyStoreProvider>) メソッドを使用して登録されたプロバイダーは無視されます。 この関数は複数回呼び出すことができます。 これにより、ディクショナリの簡易コピーが行われ、設定後にアプリでカスタム プロバイダー リストを変更できなくなります。 |
| ResetStatistics() |
統計収集が有効になっている場合、すべての値がゼロにリセットされます。 |
| RetrieveInternalInfo() |
メソッドが呼び出された時点での内部プロパティの名前と値のペアのコレクションを返します。 |
| RetrieveStatistics() |
メソッドが呼び出された時点での統計の名前と値のペアのコレクションを返します。 |
イベント
| 名前 | 説明 |
|---|---|
| InfoMessage |
SQL Serverが警告または情報メッセージを返したときに発生します。 |
明示的なインターフェイスの実装
| 名前 | 説明 |
|---|---|
| ICloneable.Clone() |
現在のインスタンスのコピーである新しいオブジェクトを作成します。 |