Поделиться через


SqlDataAdapter.RowUpdated Событие

Определение

Происходит во время Update(DataSet) после выполнения команды для источника данных. Сделана попытка обновления, поэтому создается событие.

public:
 event System::Data::SqlClient::SqlRowUpdatedEventHandler ^ RowUpdated;
public event System.Data.SqlClient.SqlRowUpdatedEventHandler RowUpdated;
[System.Data.DataSysDescription("DbDataAdapter_RowUpdated")]
public event System.Data.SqlClient.SqlRowUpdatedEventHandler RowUpdated;
member this.RowUpdated : System.Data.SqlClient.SqlRowUpdatedEventHandler 
[<System.Data.DataSysDescription("DbDataAdapter_RowUpdated")>]
member this.RowUpdated : System.Data.SqlClient.SqlRowUpdatedEventHandler 
Public Custom Event RowUpdated As SqlRowUpdatedEventHandler 

Тип события

Атрибуты

Примеры

В следующем примере показано, как использовать события RowUpdating и RowUpdated .

Событие RowUpdating возвращает следующие выходные данные:

аргументы event: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)

Событие RowUpdated возвращает следующие выходные данные:

аргументы event: (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 = "...";
    const string queryString = "SELECT * FROM Products";

    // create DataAdapter
    SqlDataAdapter adapter = new(queryString, connectionString);
    SqlCommandBuilder builder = new(adapter);

    // Create and fill DataSet (select only first 5 rows)
    DataSet dataSet = new();
    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

    Public Overloads Shared Function Main(args() As String) As Integer
        Const connectionString As String = "..."
        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


    Private Overloads 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


    Private Overloads 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существует два события, которые происходят в каждой обновляемой строке данных. Порядок выполнения выглядит следующим образом:

  1. Значения в перемещаются DataRow в значения параметров.

  2. Возникает событие OnRowUpdating.

  3. Команда выполняется.

  4. Если для команды задано значение FirstReturnedRecord, первый возвращенный результат помещается в DataRow.

  5. Если есть выходные параметры, они помещаются в DataRow.

  6. Возникает событие OnRowUpdated.

  7. Вызывается метод AcceptChanges.

Применяется к

См. также раздел