OleDbDataAdapter.RowUpdating Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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;
[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
Ereignistyp
- Attribute
Beispiele
Das folgende Beispiel zeigt die RowUpdating verwendeten Ereignisse und 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
Hinweise
Wenn Sie verwenden Update, treten zwei Ereignisse pro aktualisierter Datenzeile auf. Die Ausführungsreihenfolge lautet wie folgt:
Die Werte in werden DataRow in die Parameterwerte verschoben.
Das OnRowUpdating-Ereignis wird ausgelöst.
Der Befehl wird ausgeführt.
Wenn der Befehl auf
FirstReturnedRecord
festgelegt ist, wird das erste zurückgegebene Ergebnis in der DataRowplatziert.Wenn Ausgabeparameter vorhanden sind, werden sie im DataRowplatziert.
Das OnRowUpdated-Ereignis wird ausgelöst.
AcceptChanges wird aufgerufen.