Sdílet prostřednictvím


Aktualizace dat ve zdroji dat

Příkazy SQL, které upravují data (například INSERT, UPDATE nebo DELETE), nevrací řádky. Podobně mnoho uložených procedur provádí akci, ale nevrací řádky. Pokud chcete spustit příkazy, které nevrací řádky, vytvořte Command objekt s příslušným příkazem SQL a připojením, včetně požadovaných parametrů. Spusťte příkaz pomocí ExecuteNonQuery metody objektu Command .

Metoda ExecuteNonQuery vrátí celé číslo, které představuje počet řádků ovlivněných příkazem nebo uloženou procedurou, která byla provedena. Pokud se provede více příkazů, vrácená hodnota je součet záznamů ovlivněných všemi příkazy spuštěnými.

Příklad

Následující příklad kódu spustí příkaz INSERT pro vložení záznamu do databáze pomocí 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();

Následující příklad kódu spustí uloženou proceduru vytvořenou vzorovým kódem při provádění operací katalogu. Uložená procedura nevrací žádné řádky, takže ExecuteNonQuery metoda se používá, ale uložená procedura přijímá vstupní parametr a vrací výstupní parametr a návratovou hodnotu.

U objektu OleDbCommandReturnValue musí být parametr nejprve přidán do Parameters kolekce.

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

Viz také