次の方法で共有


SqlCommand.ExecuteNonQuery メソッド

定義

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

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

戻り値

影響を受けた行の数。

実装

例外

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

- または -

SqlDbTypeが にTextReader設定されている場合ValueCharNCharNVarCharVarCharまたは Xml 以外の が使用されました。

- または -

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

ロックされた行に対するコマンドの実行中に、例外が発生しました。 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 になります。

適用対象

こちらもご覧ください