다음을 통해 공유


OleDbDataAdapter.RowUpdated 이벤트

정의

데이터 소스에 대해 명령이 실행된 후에 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 

이벤트 유형

특성

예제

다음 예제에서는 사용 중인 및 RowUpdated 이벤트를 보여 RowUpdating 줍니다.

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경우 업데이트된 데이터 행당 두 개의 이벤트가 발생합니다. 실행 순서는 다음과 같습니다.

  1. 값을 DataRow 매개 변수 값으로 이동 됩니다.

  2. OnRowUpdating 이벤트가 발생합니다.

  3. 명령을 실행합니다.

  4. 명령으로 설정 되어 있으면 FirstReturnedRecord, 첫 번째 반환 결과에 위치한는 DataRow합니다.

  5. 에 배치 됩니다 출력 매개 변수가 있는 경우는 DataRow합니다.

  6. OnRowUpdated 이벤트가 발생합니다.

  7. AcceptChanges을 호출합니다.

적용 대상

추가 정보