OleDbDataAdapter.RowUpdated 事件    
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
在对数据源执行命令后的 Update(DataSet) 过程中发生。 尝试进行更新。 因此,事件发生。
public:
 event System::Data::OleDb::OleDbRowUpdatedEventHandler ^ RowUpdated;public event System.Data.OleDb.OleDbRowUpdatedEventHandler? RowUpdated;[System.Data.DataSysDescription("DbDataAdapter_RowUpdated")]
public event System.Data.OleDb.OleDbRowUpdatedEventHandler RowUpdated;public event System.Data.OleDb.OleDbRowUpdatedEventHandler RowUpdated;member this.RowUpdated : System.Data.OleDb.OleDbRowUpdatedEventHandler [<System.Data.DataSysDescription("DbDataAdapter_RowUpdated")>]
member this.RowUpdated : System.Data.OleDb.OleDbRowUpdatedEventHandler Public Custom Event RowUpdated As OleDbRowUpdatedEventHandler 事件类型
- 属性
示例
以下示例演示正在使用 的 RowUpdating 和 RowUpdated 事件。
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
注解
使用 Update时,每个更新的数据行都会发生两个事件。 执行顺序如下:
- 中的 DataRow 值将移动到参数值。 
- 引发 OnRowUpdating 事件。 
- 命令执行。 
- 如果命令设置为 - FirstReturnedRecord,则返回的第一个结果将放在 中 DataRow。
- 如果有输出参数,则它们放置在 中 DataRow。 
- 引发 OnRowUpdated 事件。 
- 调用 AcceptChanges。