SqlCommand.ExecuteNonQuery メソッド

定義

接続に対して Transact-SQL ステートメントを実行し、影響を受けた行数を返します。Executes a Transact-SQL statement against the connection and returns the number of rows affected.

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

戻り値

影響を受けた行数。The number of rows affected.

実装

例外

SqlDbType が ** に設定されたときに、** Binary** でも **VarBinaryValue でもない Stream が使用されました。A SqlDbType other than Binary or VarBinary was used when Value was set to Stream. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

または-or-

SqlDbType が ** に設定されたときに、** Char NChar NVarChar VarChar XmlValue のいずれでもない TextReader が使用されました。A SqlDbType other than Char, NChar, NVarChar, VarChar, or Xml was used when Value was set to TextReader.

または-or-

SqlDbType が ** に設定されたときに、** XmlValue 以外の XmlReader が使用されました。A SqlDbType other than Xml was used when Value was set to XmlReader.

ロックされた行に対するコマンドの実行中に、例外が発生しました。An exception occurred while executing the command against a locked row. Microsoft .NET Framework バージョン 1.0 を使用している場合は、この例外は生成されません。This exception is not generated when you are using Microsoft .NET Framework version 1.0.

または-or-

ストリーミング操作中にタイムアウトが発生しました。A timeout occurred during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトでエラーが発生しました。An error occurred in a Stream, XmlReader or TextReader object during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、SqlConnection が閉じられたか切断されました。The SqlConnection closed or dropped during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

ストリーミング操作中に、StreamXmlReader、または TextReader オブジェクトが閉じられました。The Stream, XmlReader or TextReader object was closed during a streaming operation. ストリーミングの詳細については、「SqlClient ストリーミング サポート」を参照してください。For more information about streaming, see SqlClient Streaming Support.

次の例では、SqlCommand を作成し、ExecuteNonQueryを使用して実行します。The following example creates a SqlCommand and then executes it using ExecuteNonQuery. この例には、Transact-sql ステートメント (UPDATE、INSERT、DELETE など) と、データソースへの接続に使用する文字列が渡されます。The example is passed a string that is a Transact-SQL statement (such as UPDATE, INSERT, or DELETE) and a string to use to connect to the data source.

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 を使用せずにデータベース内のデータを変更したりできます。You can use the ExecuteNonQuery to perform catalog operations (for example, querying the structure of a database or creating database objects such as tables), or to change the data in a database without using a DataSet by executing UPDATE, INSERT, or DELETE statements.

ExecuteNonQuery は行を返しませんが、パラメーターにマップされた出力パラメーターまたは戻り値にはデータが設定されます。Although the ExecuteNonQuery returns no rows, any output parameters or return values mapped to parameters are populated with data.

UPDATE、INSERT、DELETE の各ステートメントで、戻り値はそのコマンドの影響を受ける行の数です。For UPDATE, INSERT, and DELETE statements, the return value is the number of rows affected by the command. 他のすべての種類のステートメントでは、戻り値は -1 です。For all other types of statements, the return value is -1.

挿入または更新するテーブルにトリガーが存在する場合、戻り値には、挿入操作または更新操作によって影響を受けた行数と、トリガーまたはトリガーの影響を受けた行数が含まれます。When a trigger exists on a table being inserted or updated, the return value includes the number of rows affected by both the insert or update operation and the number of rows affected by the trigger or triggers.

接続に対して SET NOCOUNT ON が設定されている場合 (コマンドの実行前または実行の一部として、またはコマンドの実行によって開始されるトリガーの一部として)、個々のステートメントの影響を受ける行は、この m によって返される影響を受ける行の数に影響を与えません。ethod.When SET NOCOUNT ON is set on the connection (before or as part of executing the command, or as part of a trigger initiated by the execution of the command) the rows affected by individual statements stop contributing to the count of rows affected that is returned by this method.

カウントに寄与するステートメントが検出されなかった場合、戻り値は-1 になります。If no statements are detected that contribute to the count, the return value is -1. ロールバックが発生した場合、戻り値も-1 になります。If a rollback occurs, the return value is also -1.

適用対象

こちらもご覧ください