SqlDataAdapter.RowUpdating Událost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastane během Update(DataSet) před spuštěním příkazu ve zdroji dat. Provede se pokus o aktualizaci, takže se událost aktivuje.
public:
event Microsoft::Data::SqlClient::SqlRowUpdatingEventHandler ^ RowUpdating;
public event Microsoft.Data.SqlClient.SqlRowUpdatingEventHandler RowUpdating;
member this.RowUpdating : Microsoft.Data.SqlClient.SqlRowUpdatingEventHandler
Public Custom Event RowUpdating As SqlRowUpdatingEventHandler
Event Type
Příklady
Následující příklad ukazuje, jak používat události RowUpdating i RowUpdated události.
using System;
using System.Data;
using System.Data.Common;
using System.Windows.Forms;
using System.Xml;
using Microsoft.Data.SqlClient;
public class Form1 : Form
{
private DataSet DataSet1;
private DataGrid dataGrid1;
// handler for RowUpdating event
private static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e)
{
PrintEventArgs(e);
}
// handler for RowUpdated event
private static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e)
{
PrintEventArgs(e);
}
public static int Main()
{
const string connectionString = "Integrated Security=SSPI;database=Northwind;server=MSSQL1";
const string queryString = "SELECT * FROMProducts";
// create DataAdapter
SqlDataAdapter adapter = new SqlDataAdapter(queryString, connectionString);
SqlCommandBuilder builder = new SqlCommandBuilder(adapter);
// Create and fill DataSet (select only first 5 rows)
DataSet dataSet = new DataSet();
adapter.Fill(dataSet, 0, 5, "Table");
// Modify DataSet
DataTable table = dataSet.Tables["Table"];
table.Rows[0][1] = "new product";
// add handlers
adapter.RowUpdating += new SqlRowUpdatingEventHandler(OnRowUpdating);
adapter.RowUpdated += new SqlRowUpdatedEventHandler(OnRowUpdated);
// update, this operation fires two events
// (RowUpdating/RowUpdated) per changed row
adapter.Update(dataSet, "Table");
// remove handlers
adapter.RowUpdating -= new SqlRowUpdatingEventHandler(OnRowUpdating);
adapter.RowUpdated -= new SqlRowUpdatedEventHandler(OnRowUpdated);
return 0;
}
private static void PrintEventArgs(SqlRowUpdatingEventArgs args)
{
Console.WriteLine("OnRowUpdating");
Console.WriteLine(" event args: (" +
" command=" + args.Command +
" commandType=" + args.StatementType +
" status=" + args.Status + ")");
}
private static void PrintEventArgs(SqlRowUpdatedEventArgs args)
{
Console.WriteLine("OnRowUpdated");
Console.WriteLine(" event args: (" +
" command=" + args.Command +
" commandType=" + args.StatementType +
" recordsAffected=" + args.RecordsAffected +
" status=" + args.Status + ")");
}
}
Událost RowUpdating vrátí tento výstup:
event args: (command=Microsoft.Data.SqlClient.SqlCommand commandType=2 status=0)
Událost RowUpdated vrátí tento výstup:
event args: (command=Microsoft.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)
Poznámky
Při použití Update(DataSet)se aktualizují dvě události na řádek dat. Pořadí provádění je následující:
- Hodnoty v objektu DataRow jsou přesunuty do hodnot parametrů.
- Událost RowUpdating je vyvolána.
- Příkaz se spustí.
- Pokud je příkaz nastaven na
FirstReturnedRecord, první vrácený výsledek se umístí do DataRow. - Pokud existují výstupní parametry, umístí se do DataRow.
- Událost RowUpdated je vyvolána.
- AcceptChanges() se volá.