SqlCommand.ExecuteNonQuery メソッド

定義

接続に対して Transact-SQL ステートメントを実行し、影響を受けた行数を返します。

public:
 virtual int ExecuteNonQuery();
public:
 override int ExecuteNonQuery();
public int ExecuteNonQuery();
public override int ExecuteNonQuery();
abstract member ExecuteNonQuery : unit -> int
override this.ExecuteNonQuery : unit -> int
override this.ExecuteNonQuery : unit -> int
Public Function ExecuteNonQuery () As Integer
Public Overrides Function ExecuteNonQuery () As Integer

返品

影響を受ける行の数。

実装

例外

SqlDbTypeに設定されたときに、Binary または Value 以外のStreamが使用されました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

-または-

SqlDbTypeに設定されたときに、CharNCharNVarCharVarCharValueTextReaderが使用されました。

-または-

SqlDbType 以外のは、ValueXmlReader に設定されたときに使用されました。

ロックされた行に対するコマンドの実行中に例外が発生しました。 Microsoft .NET Framework バージョン 1.0 を使用している場合、この例外は生成されません。

-または-

ストリーミング操作中にタイムアウトが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトでエラーが発生しました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

SqlConnectionストリーミング操作中に閉じたり削除されたりします。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

ストリーミング操作中に、 StreamXmlReader 、または TextReader オブジェクトが閉じられました。 ストリーミングの詳細については、「 SqlClient ストリーミング のサポート」を参照してください。

次の例では、 SqlCommand を作成し、 ExecuteNonQueryを使用して実行します。 この例では、Transact-SQL ステートメント (UPDATE、INSERT、DELETE など) である文字列と、データ ソースへの接続に使用する文字列が渡されます。

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

注釈

ExecuteNonQueryを使用すると、カタログ操作 (データベースの構造の照会やテーブルなどのデータベース オブジェクトの作成など) を実行したり、UPDATE、INSERT、DELETE ステートメントを実行してDataSetを使用せずにデータベース内のデータを変更したりできます。

ExecuteNonQueryは行を返しませんが、パラメーターにマップされた出力パラメーターまたは戻り値にはデータが設定されます。

UPDATE、INSERT、および DELETE ステートメントの場合、戻り値はコマンドの影響を受ける行数です。 他のすべての種類のステートメントの戻り値は -1 です。

挿入または更新中のテーブルにトリガーが存在する場合、戻り値には、挿入操作または更新操作の両方の影響を受ける行数と、トリガーまたはトリガーの影響を受ける行数が含まれます。

接続で SET NOCOUNT ON が設定されている場合 (コマンドの実行の前または一部として、またはコマンドの実行によって開始されたトリガーの一部として)、個々のステートメントの影響を受ける行は、このメソッドによって返される影響を受ける行の数に影響を与えるのを停止します。

カウントに影響するステートメントが検出されない場合、戻り値は -1 になります。 ロールバックが発生した場合、戻り値も -1 になります。

適用対象

こちらもご覧ください