SqlDataAdapter.RowUpdating Событие
Определение
Происходит во время Update(DataSet) перед выполнением команды в отношении источника данных.Occurs during Update(DataSet) before a command is executed against the data source. Сделана попытка обновления, поэтому создается событие.The attempt to update is made, so the event fires.
public:
event System::Data::SqlClient::SqlRowUpdatingEventHandler ^ RowUpdating;
public event System.Data.SqlClient.SqlRowUpdatingEventHandler RowUpdating;
[System.Data.DataSysDescription("DbDataAdapter_RowUpdating")]
public event System.Data.SqlClient.SqlRowUpdatingEventHandler RowUpdating;
member this.RowUpdating : System.Data.SqlClient.SqlRowUpdatingEventHandler
[<System.Data.DataSysDescription("DbDataAdapter_RowUpdating")>]
member this.RowUpdating : System.Data.SqlClient.SqlRowUpdatingEventHandler
Public Custom Event RowUpdating As SqlRowUpdatingEventHandler
Тип события
- Атрибуты
Примеры
В следующем примере показано, как использовать RowUpdating RowUpdated события и.The following example shows how to use both the RowUpdating and RowUpdated events.
RowUpdatingСобытие возвращает следующие выходные данные:The RowUpdating event returns this output:
аргументы события: (команда = System. Data. SqlClient. SqlCommand commandType = 2 status = 0)event args: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)
RowUpdatedСобытие возвращает следующие выходные данные:The RowUpdated event returns this output:
аргументы события: (команда = System. Data. SqlClient. SqlCommand commandType = 2 Рекордсаффектед = 1 Строка = System. Data. DataRow [37] status = 0)event args: (command=System.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)
// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
PrintEventArgs(e);
}
// handler for RowUpdated event
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
PrintEventArgs(e);
}
public static int Main()
{
const string connectionString =
"Integrated Security=SSPI;database=Northwind;server=MSSQL1";
const string queryString = "SELECT * FROM Products";
// create DataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
// Create and fill DataSet (select only first 5 rows)
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, 0, 5, "Table");
// Modify DataSet
DataTable table = dataSet.Tables["Table"];
table.Rows[0][1] = "new product";
// add handlers
adapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
adapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );
// update, this operation fires two events
// (RowUpdating/RowUpdated) per changed row
adapter.Update(dataSet, "Table");
// remove handlers
adapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
adapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
return 0;
}
private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
Console.WriteLine("OnRowUpdating");
Console.WriteLine(" event args: ("+
" command=" + args.Command +
" commandType=" + args.StatementType +
" status=" + args.Status + ")");
}
private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
Console.WriteLine("OnRowUpdated");
Console.WriteLine( " event args: ("+
" command=" + args.Command +
" commandType=" + args.StatementType +
" recordsAffected=" + args.RecordsAffected +
" status=" + args.Status + ")");
}
' handler for RowUpdating event
Private Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
PrintEventArgs(e)
End Sub
' handler for RowUpdated event
Private Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
PrintEventArgs(e)
End Sub
'Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
End Sub
Overloads Public Shared Function Main(args() As String) As Integer
Const connectionString As String = _
"Integrated Security=SSPI;database=Northwind;server=MSSQL1"
Const queryString As String = "SELECT * FROM Products"
' create DataAdapter
Dim adapter As New SqlDataAdapter(queryString, connectionString)
Dim builder As New SqlCommandBuilder(adapter)
' Create and fill DataSet (select only first 5 rows)
Dim dataSet As New DataSet()
adapter.Fill(dataSet, 0, 5, "Table")
' Modify DataSet
Dim table As DataTable = dataSet.Tables("Table")
table.Rows(0)(1) = "new product"
' add handlers
AddHandler adapter.RowUpdating, AddressOf OnRowUpdating
AddHandler adapter.RowUpdated, AddressOf OnRowUpdated
' update, this operation fires two events
'(RowUpdating/RowUpdated) per changed row
adapter.Update(dataSet, "Table")
' remove handlers
RemoveHandler adapter.RowUpdating, AddressOf OnRowUpdating
RemoveHandler adapter.RowUpdated, AddressOf OnRowUpdated
Return 0
End Function
Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
Console.WriteLine("OnRowUpdating")
Console.WriteLine(" event args: (" & " command=" & args.Command.CommandText & _
" commandType=" & args.StatementType & " status=" & args.Status & ")")
End Sub
Overloads Private Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
Console.WriteLine("OnRowUpdated")
Console.WriteLine(" event args: (" & " command=" & args.Command.CommandText & _
" commandType=" & args.StatementType & " recordsAffected=" & _
args.RecordsAffected & " status=" & args.Status & ")")
End Sub
End Class
Комментарии
При использовании для Update каждого обновления строки данных происходит два события.When using Update, there are two events that occur per data row updated. Порядок выполнения выглядит следующим образом:The order of execution is as follows:
Значения в DataRow перемещаются в значения параметров.The values in the DataRow are moved to the parameter values.
Возникает событие OnRowUpdating.The OnRowUpdating event is raised.
Команда выполняется.The command executes.
Если для команды задано значение
FirstReturnedRecord
, первый возвращенный результат помещается в DataRow .If the command is set toFirstReturnedRecord
, the first returned result is placed in the DataRow.Если имеются выходные параметры, они помещаются в DataRow .If there are output parameters, they are placed in the DataRow.
Возникает событие OnRowUpdated.The OnRowUpdated event is raised.
Вызывается метод AcceptChanges.AcceptChanges is called.