OleDbDataAdapter.RowUpdated Evento
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Si verifica durante Update(DataSet) l'esecuzione di un comando sull'origine dati. Viene eseguito il tentativo di aggiornamento. Di conseguenza, l'evento si verifica.
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;
[<System.Data.DataSysDescription("DbDataAdapter_RowUpdated")>]
member this.RowUpdated : System.Data.OleDb.OleDbRowUpdatedEventHandler
member this.RowUpdated : System.Data.OleDb.OleDbRowUpdatedEventHandler
Public Custom Event RowUpdated As OleDbRowUpdatedEventHandler
Tipo evento
- Attributi
Esempio
Nell'esempio seguente vengono illustrati gli RowUpdating eventi e RowUpdated utilizzati.
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
Commenti
Quando si usa Update, sono presenti due eventi che si verificano per ogni riga di dati aggiornata. L'ordine di esecuzione è il seguente:
I valori in DataRow vengono spostati nei valori dei parametri.
Viene generato l'evento OnRowUpdating.
Il comando viene eseguito.
Se il comando è impostato su
FirstReturnedRecord, il primo risultato restituito viene inserito in DataRow.Se sono presenti parametri di output, vengono inseriti in DataRow.
Viene generato l'evento OnRowUpdated.
Si chiama AcceptChanges.