Aktualizowanie danych w źródle danych
Instrukcje SQL modyfikujące dane (takie jak INSERT, UPDATE lub DELETE) nie zwracają wierszy. Podobnie wiele procedur składowanych wykonuje akcję, ale nie zwraca wierszy. Aby wykonać polecenia, które nie zwracają wierszy, utwórz obiekt command z odpowiednim poleceniem SQL i Połączenie ion, w tym wszystkie wymagane parametry. Wykonaj polecenie za pomocą metody ExecuteNonQuery obiektu Command.
Metoda ExecuteNonQuery zwraca liczbę całkowitą reprezentującą liczbę wierszy, których dotyczy instrukcja lub procedura składowana, która została wykonana. Jeśli jest wykonywanych wiele instrukcji, zwracana wartość jest sumą rekordów, których dotyczy wszystkie wykonane instrukcje.
Przykład
Poniższy przykład kodu wykonuje instrukcję INSERT w celu wstawienia rekordu do bazy danych przy użyciu metody 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();
Poniższy przykład kodu wykonuje procedurę składowaną utworzoną przez przykładowy kod w temacie Wykonywanie operacji wykazu. Procedura składowana nie zwraca żadnych wierszy, więc jest używana metoda ExecuteNonQuery , ale procedura składowana odbiera parametr wejściowy i zwraca parametr wyjściowy i wartość zwracaną.
OleDbCommand W przypadku obiektu parametr ReturnValue należy najpierw dodać do kolekcji Parameters.
' 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;