次の方法で共有


SqlCommand.ExecuteNonQuery メソッド

定義

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

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

戻り値

影響を受けた行の数。

例外

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

- または -

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

または

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

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

- または -

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

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

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

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

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

// <Snippet1>
using System;
using System.Data;
using Microsoft.Data.SqlClient;

namespace SqlCommandCS
{
    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();
            }
        }
    }
}
// </Snippet1>

注釈

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

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

UPDATE、INSERT、DELETE の各ステートメントで、戻り値はそのコマンドの影響を受ける行の数です。 その他のすべての種類のステートメントでは、戻り値は -1 です。 挿入または更新されるテーブルにトリガーが存在する場合、戻り値には、挿入操作または更新操作の両方の影響を受ける行数と、トリガーまたはトリガーの影響を受ける行数が含まれます。 SET NOCOUNT ON が接続に設定されている場合 (コマンドの実行の前または一部として、またはコマンドの実行によって開始されたトリガーの一部として)、個々のステートメントの影響を受ける行は、このメソッドによって返される影響を受ける行の数に寄与しなくなります。 カウントに寄与するステートメントが検出されない場合、戻り値は -1 になります。 ロールバックが発生した場合、戻り値も -1 になります。

適用対象