Dela via


Uppdatera data i en datakälla

SQL-instruktioner som ändrar data (till exempel INSERT, UPDATE eller DELETE) returnerar inte rader. På samma sätt utför många lagrade procedurer en åtgärd men returnerar inte rader. Om du vill köra kommandon som inte returnerar rader skapar du ett kommandoobjekt med lämpligt SQL-kommando och en Anslut ion, inklusive eventuella obligatoriska parametrar. Kör kommandot med metoden ExecuteNonQuery för kommandoobjektet.

Metoden ExecuteNonQuery returnerar ett heltal som representerar antalet rader som påverkas av instruktionen eller den lagrade procedur som kördes. Om flera instruktioner körs är värdet som returneras summan av de poster som påverkas av alla körda instruktioner.

Exempel

I följande kodexempel körs en INSERT-instruktion för att infoga en post i en databas med 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();  

I följande kodexempel körs den lagrade procedur som skapats av exempelkoden i Utföra katalogåtgärder. Inga rader returneras av den lagrade proceduren, så metoden ExecuteNonQuery används, men den lagrade proceduren tar emot en indataparameter och returnerar en utdataparameter och ett returvärde.

OleDbCommand För objektet måste parametern ReturnValue läggas till i samlingen Parametrar först.

' 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;  

Se även