OleDbDataAdapter.RowUpdating Kejadian
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Terjadi selama Update(DataSet) sebelum perintah dijalankan terhadap sumber data. Upaya untuk memperbarui dilakukan. Oleh karena itu, peristiwa terjadi.
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
Jenis Acara
- Atribut
Contoh
Contoh berikut menunjukkan peristiwa dan RowUpdated yang RowUpdating digunakan.
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
Keterangan
Saat Anda menggunakan Update, ada dua peristiwa yang terjadi per baris data yang diperbarui. Urutan eksekusi adalah sebagai berikut:
Nilai dalam DataRow dipindahkan ke nilai parameter.
Acara OnRowUpdating dinaikkan.
Perintah dijalankan.
Jika perintah diatur ke
FirstReturnedRecord
, hasil pertama yang dikembalikan ditempatkan di DataRow.Jika ada parameter output, parameter tersebut ditempatkan di DataRow.
Acara OnRowUpdated dinaikkan.
AcceptChanges dipanggil.