データ ソースのデータの更新Updating Data in a Data Source

データを変更する SQL ステートメント (INSERT、UPDATE、DELETE など) は行を返しません。SQL statements that modify data (such as INSERT, UPDATE, or DELETE) do not return rows. 同様に、多くのストアド プロシージャは、アクションを実行しても行を返しません。Similarly, many stored procedures perform an action but do not return rows. 行を返さないコマンドを実行するには、作成、コマンド適切な SQL コマンドを使用してオブジェクトと接続など必要なパラメーターします。To execute commands that do not return rows, create a Command object with the appropriate SQL command and a Connection, including any required Parameters. コマンドを実行、 ExecuteNonQueryのメソッド、コマンドオブジェクト。Execute the command with the ExecuteNonQuery method of the Command object.

ExecuteNonQueryステートメントまたはが実行されたストアド プロシージャによって影響を受ける行の数を表す整数を返します。The ExecuteNonQuery method returns an integer that represents the number of rows affected by the statement or stored procedure that was executed. 複数のステートメントが実行された場合は、実行された各ステートメントの影響を受けたレコードの合計を示す値が返されます。If multiple statements are executed, the value returned is the sum of the records affected by all of the statements executed.

Example

次のコード例を使用してデータベースにレコードを挿入する INSERT ステートメントを実行するExecuteNonQueryします。The following code example executes an INSERT statement to insert a record into a database using ExecuteNonQuery.

' Assumes connection is a valid SqlConnection.  
connection.Open()  
  
Dim queryString As String = "INSERT INTO Customers " & _  
  "(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')"  
  
Dim command As SqlCommand = New SqlCommand(queryString, connection)  
Dim recordsAffected As Int32 = command.ExecuteNonQuery()  
// Assumes connection is a valid SqlConnection.  
connection.Open();  
  
string queryString = "INSERT INTO Customers " +  
  "(CustomerID, CompanyName) Values('NWIND', 'Northwind Traders')";  
  
SqlCommand command = new SqlCommand(queryString, connection);  
Int32 recordsAffected = command.ExecuteNonQuery();  

次のコード例のサンプル コードで作成したストアド プロシージャを実行するカタログ操作の実行します。The following code example executes the stored procedure created by the sample code in Performing Catalog Operations. ストアド プロシージャによって行が返されないため、 ExecuteNonQueryメソッドを使用するが、ストアド プロシージャが受け取る入力パラメーターと出力パラメーターと戻り値を返します。No rows are returned by the stored procedure, so the ExecuteNonQuery method is used, but the stored procedure does receive an input parameter and returns an output parameter and a return value.

OleDbCommandオブジェクト、 ReturnValueにパラメーターを追加する必要があります、パラメーターコレクション最初。For the OleDbCommand object, the ReturnValue parameter must be added to the Parameters collection first.

' Assumes connection is a valid SqlConnection.  
Dim command As SqlCommand = _  
   New SqlCommand("InsertCategory" , connection)  
command.CommandType = CommandType.StoredProcedure  
  
Dim parameter As SqlParameter = _  
 command.Parameters.Add("@RowCount", SqlDbType.Int)  
parameter.Direction = ParameterDirection.ReturnValue  
  
parameter = command.Parameters.Add( _  
  "@CategoryName", SqlDbType.NChar, 15)  
  
parameter = command.Parameters.Add("@Identity", SqlDbType.Int)  
parameter.Direction = ParameterDirection.Output  
  
command.Parameters("@CategoryName").Value = "New Category"  
command.ExecuteNonQuery()  
  
Dim categoryID As Int32 = CInt(command.Parameters("@Identity").Value)  
Dim rowCount As Int32 = CInt(command.Parameters("@RowCount").Value)   
// Assumes connection is a valid SqlConnection.  
SqlCommand command = new SqlCommand("InsertCategory" , connection);  
command.CommandType = CommandType.StoredProcedure;  
  
SqlParameter parameter = command.Parameters.Add(  
  "@RowCount", SqlDbType.Int);  
parameter.Direction = ParameterDirection.ReturnValue;  
  
parameter = command.Parameters.Add(  
  "@CategoryName", SqlDbType.NChar, 15);  
  
parameter = command.Parameters.Add("@Identity", SqlDbType.Int);  
parameter.Direction = ParameterDirection.Output;  
  
command.Parameters["@CategoryName"].Value = "New Category";  
command.ExecuteNonQuery();  
  
Int32 categoryID = (Int32) command.Parameters["@Identity"].Value;  
Int32 rowCount = (Int32) command.Parameters["@RowCount"].Value;  

関連項目See also