OleDbDataAdapter.RowUpdating Ereignis

Definition

Tritt während der Ausführung von Update(DataSet) ein, bevor ein Befehl für die Datenquelle ausgeführt wird. Es wird versucht, eine Aktualisierung vorzunehmen. Daher tritt das Ereignis ein.

public:
 event System::Data::OleDb::OleDbRowUpdatingEventHandler ^ RowUpdating;
public event System.Data.OleDb.OleDbRowUpdatingEventHandler RowUpdating;
public event System.Data.OleDb.OleDbRowUpdatingEventHandler? RowUpdating;
[System.Data.DataSysDescription("DbDataAdapter_RowUpdating")]
public event System.Data.OleDb.OleDbRowUpdatingEventHandler RowUpdating;
member this.RowUpdating : System.Data.OleDb.OleDbRowUpdatingEventHandler 
[<System.Data.DataSysDescription("DbDataAdapter_RowUpdating")>]
member this.RowUpdating : System.Data.OleDb.OleDbRowUpdatingEventHandler 
Public Custom Event RowUpdating As OleDbRowUpdatingEventHandler 

Ereignistyp

OleDbRowUpdatingEventHandler
Attribute

Beispiele

Im folgenden Beispiel werden die RowUpdating verwendeten Ereignisse und RowUpdated Ereignisse dargestellt.

public static void CreateDataAdapter(
    string connectionString)
{
    using (OleDbConnection connection = new OleDbConnection(connectionString))
    {
        OleDbDataAdapter adapter = new OleDbDataAdapter(
            "SELECT * FROM Customers WHERE CustomerID = 'ALFKI'", connection);

        adapter.InsertCommand = new OleDbCommand(
            "INSERT INTO Customers (CustomerID, CompanyName) VALUES(?, ?)",
            connection);

        adapter.InsertCommand.Parameters.Add(
            "@CustomerID", OleDbType.VarChar, 5, "CustomerID");
        adapter.InsertCommand.Parameters.Add(
            "@CompanyName", OleDbType.VarChar, 30, "CompanyName");

        connection.Open();

        DataSet custDS = new DataSet();
        adapter.Fill(custDS, "Customers");

        DataRow custRow = custDS.Tables["Customers"].NewRow();
        custRow["CustomerID"] = "NEWCO";
        custRow["CompanyName"] = "New Company";
        custDS.Tables["Customers"].Rows.Add(custRow);

        // add handlers
        adapter.RowUpdating += new OleDbRowUpdatingEventHandler(OnRowUpdating);
        adapter.RowUpdated += new OleDbRowUpdatedEventHandler(OnRowUpdated);

        adapter.Update(custDS, "Customers");

        // remove handlers
        adapter.RowUpdating -= new OleDbRowUpdatingEventHandler(OnRowUpdating);
        adapter.RowUpdated -= new OleDbRowUpdatedEventHandler(OnRowUpdated);

        foreach (DataRow row in custDS.Tables["Customers"].Rows)
        {
            if (row.HasErrors)
                Console.WriteLine(row.RowError);
        }
    }
}

protected static void OnRowUpdating(object sender,
    OleDbRowUpdatingEventArgs args)
{
    if (args.StatementType == StatementType.Insert)
    {
        System.IO.TextWriter writer = System.IO.File.AppendText("Inserts.log");
        writer.WriteLine("{0}: Customer {1} Inserted.",
            DateTime.Now, args.Row["CustomerID"]);
        writer.Close();
    }
}

protected static void OnRowUpdated(object sender, OleDbRowUpdatedEventArgs args)
{
    if (args.Status == UpdateStatus.ErrorsOccurred)
    {
        args.Row.RowError = args.Errors.Message;
        args.Status = UpdateStatus.SkipCurrentRow;
    }
}
Public Sub CreateDataAdapter(ByVal connectionString As String)
    Using connection As New OleDbConnection(connectionString)
        Dim adapter As New OleDbDataAdapter( _
            "SELECT * FROM Customers WHERE CustomerID = 'ALFKI'", connection)

        adapter.InsertCommand = New OleDbCommand( _
            "INSERT INTO Customers (CustomerID, CompanyName) VALUES(?, ?)", _
            connection)

        adapter.InsertCommand.Parameters.Add( _
            "@CustomerID", OleDbType.VarChar, 5, "CustomerID")
        adapter.InsertCommand.Parameters.Add( _
            "@CompanyName", OleDbType.VarChar, 30, "CompanyName")

        connection.Open()

        Dim custDS As New DataSet()
        adapter.Fill(custDS, "Customers")

        Dim custRow As DataRow = custDS.Tables("Customers").NewRow()
        custRow("CustomerID") = "NEWCO"
        custRow("CompanyName") = "New Company"
        custDS.Tables("Customers").Rows.Add(custRow)

        ' add handlers
        AddHandler adapter.RowUpdating, _
            New OleDbRowUpdatingEventHandler(AddressOf OnRowUpdating)
        AddHandler adapter.RowUpdated, _
            New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

        adapter.Update(custDS, "Customers")

        ' remove handlers
        RemoveHandler adapter.RowUpdating, _
            New OleDbRowUpdatingEventHandler(AddressOf OnRowUpdating)
        RemoveHandler adapter.RowUpdated, _
            New OleDbRowUpdatedEventHandler(AddressOf OnRowUpdated)

        Dim row As DataRow
        For Each row In custDS.Tables("Customers").Rows
            If row.HasErrors Then Console.WriteLine(row.RowError)
        Next
    End Using
End Sub

Sub OnRowUpdating(ByVal sender As Object, _
    ByVal args As OleDbRowUpdatingEventArgs)

    If args.StatementType = StatementType.Insert Then
        Dim writer As System.IO.TextWriter = _
            System.IO.File.AppendText("Inserts.log")
        writer.WriteLine("{0}: Customer {1} Inserted.", _
            DateTime.Now, args.Row("CustomerID"))
        writer.Close()
    End If
End Sub

Sub OnRowUpdated(ByVal sender As Object, _
    ByVal args As OleDbRowUpdatedEventArgs)

    If args.Status = UpdateStatus.ErrorsOccurred Then
        args.Row.RowError = args.Errors.Message
        args.Status = UpdateStatus.SkipCurrentRow
    End If
End Sub

Hinweise

Wenn Sie verwenden Update, gibt es zwei Ereignisse, die pro Datenzeile aktualisiert werden. Die Reihenfolge der Ausführung ist wie folgt:

  1. Die Werte in den DataRow Parameterwerten werden in die Parameterwerte verschoben.

  2. Das OnRowUpdating-Ereignis wird ausgelöst.

  3. Der Befehl wird ausgeführt.

  4. Wenn der Befehl auf FirstReturnedRecord"festgelegt" festgelegt ist, wird das erste zurückgegebene Ergebnis in der DataRowDatei platziert.

  5. Wenn Ausgabeparameter vorhanden sind, werden sie in den DataRow.

  6. Das OnRowUpdated-Ereignis wird ausgelöst.

  7. AcceptChanges wird aufgerufen.

Gilt für

Siehe auch