OleDbDataAdapter.RowUpdating Olay

Tanım

Veri kaynağında bir komut yürütülmeden önce gerçekleşir Update(DataSet) . Güncelleştirme girişimi yapılır. Bu nedenle, olay gerçekleşir.

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

Olay Türü

Öznitelikler

Örnekler

Aşağıdaki örnekte kullanılan ve RowUpdating olayları gösterilmektedirRowUpdated.

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

Açıklamalar

kullandığınızda Update, güncelleştirilen veri satırı başına iki olay oluşur. Yürütme sırası aşağıdaki gibidir:

  1. DataRow değerleri parametre değerlerine taşınır.

  2. OnRowUpdating olayı tetiklenir.

  3. Komut yürütülür.

  4. Komut FirstReturnedRecordolarak ayarlanırsa, döndürülen ilk sonuç DataRowyerleştirilir.

  5. Çıkış parametreleri varsa, DataRowyerleştirilir.

  6. OnRowUpdated olayı tetiklenir.

  7. AcceptChanges adlandırılır.

Şunlara uygulanır

Ayrıca bkz.