Freigeben über


OleDbDataAdapter.RowUpdating-Ereignis

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

Namespace: System.Data.OleDb
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public Event RowUpdating As OleDbRowUpdatingEventHandler
'Usage
Dim instance As OleDbDataAdapter
Dim handler As OleDbRowUpdatingEventHandler

AddHandler instance.RowUpdating, handler
public event OleDbRowUpdatingEventHandler RowUpdating
public:
event OleDbRowUpdatingEventHandler^ RowUpdating {
    void add (OleDbRowUpdatingEventHandler^ value);
    void remove (OleDbRowUpdatingEventHandler^ value);
}
/** @event */
public void add_RowUpdating (OleDbRowUpdatingEventHandler value)

/** @event */
public void remove_RowUpdating (OleDbRowUpdatingEventHandler value)
JScript unterstützt die Verwendung von Ereignissen, aber nicht die Deklaration von neuen Ereignissen.

Hinweise

Wird Update verwendet, treten pro aktualisierter Datenzeile zwei Ereignisse ein. Die Ausführung erfolgt in der folgenden Reihenfolge:

  1. Die Werte in der DataRow 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 ist, wird das erste zurückgegebene Ergebnis in der DataRow platziert.

  5. Wenn Ausgabeparameter vorhanden sind, werden diese in der DataRow platziert.

  6. Das OnRowUpdated-Ereignis wird ausgelöst.

  7. AcceptChanges wird aufgerufen.

Beispiel

Im folgenden Beispiel werden das verwendete RowUpdating-Ereignis und das verwendete RowUpdated-Ereignis gezeigt.

Public Sub CreateDataAdapter(ByVal connectionString As String)
    Using connection As New OleDbConnection(connectionString)
        Dim adapter As OleDbDataAdapter = 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 DataSet = 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
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;
    }
}
using System;
using System.Data;
using System.Data.OleDb;

class Class1
{
    static void Main()
    {
        string x = "Provider=SQLOLEDB;Data Source=(local);Integrated Security=SSPI;Initial Catalog=Northwind";
        CreateDataAdapter(x);
    }

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

Plattformen

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

Siehe auch

Referenz

OleDbDataAdapter-Klasse
OleDbDataAdapter-Member
System.Data.OleDb-Namespace

Weitere Ressourcen

Arbeiten mit DataAdapters