次の方法で共有


SqlDataAdapter.RowUpdated イベント

Update 処理中に、データ ソースに対してコマンドが実行された後に発生します。更新が試行されると、このイベントが発生します。

Public Event RowUpdated As SqlRowUpdatedEventHandler
[C#]
public event SqlRowUpdatedEventHandler RowUpdated;
[C++]
public: __event SqlRowUpdatedEventHandler* RowUpdated;

[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。

イベント データ

イベント ハンドラが、このイベントに関連するデータを含む、SqlRowUpdatedEventArgs 型の引数を受け取りました。次の SqlRowUpdatedEventArgs プロパティには、このイベントの固有の情報が記載されます。

プロパティ 説明
Command Update の呼び出し時に実行される SqlCommand を取得または設定します。
Errors (RowUpdatedEventArgs から継承されます) Command の実行時に .NET Framework データ プロバイダが生成したエラーを取得します。
RecordsAffected (RowUpdatedEventArgs から継承されます) SQL ステートメントによって変更、挿入、または削除された行の数を取得します。
Row (RowUpdatedEventArgs から継承されます) Update を通じて送信された DataRow を取得します。
StatementType (RowUpdatedEventArgs から継承されます) 実行された SQL ステートメントの種類を取得します。
Status (RowUpdatedEventArgs から継承されます) Command プロパティの UpdateStatus を取得します。
TableMapping (RowUpdatedEventArgs から継承されます) Update を通じて送信された DataTableMapping を取得します。

解説

Update を使用すると、データ行が更新されるたびに 2 つのイベントが発生します。次の順序で処理が実行されます。

  1. DataRow 内の値が、パラメータ値に移動されます。
  2. OnRowUpdating イベントが発生します。
  3. コマンドが実行されます。
  4. コマンドが FirstReturnedRecord に設定されている場合は、最初に返された結果が DataRow に格納されます。
  5. 出力パラメータがある場合は、それが DataRow に格納されます。
  6. OnRowUpdated イベントが発生します。
  7. AcceptChanges が呼び出されます。

使用例

[Visual Basic, C#, C++] RowUpdating イベントと RowUpdated イベントを使用する方法を次の例に示します。

[Visual Basic, C#, C++] RowUpdating イベントは、次の出力を返します。

[Visual Basic, C#, C++] イベント引数: (command=System.Data.SqlClient.SqlCommand commandType=2 status=0)

[Visual Basic, C#, C++] RowUpdated イベントは、次の出力を返します。

[Visual Basic, C#, C++] イベント引数: (command=System.Data.SqlClient.SqlCommand commandType=2 recordsAffected=1 row=System.Data.DataRow[37] status=0)

 
' handler for RowUpdating event
Protected Shared Sub OnRowUpdating(sender As Object, e As SqlRowUpdatingEventArgs)
    PrintEventArgs(e)
End Sub 'OnRowUpdating

' handler for RowUpdated event
Protected Shared Sub OnRowUpdated(sender As Object, e As SqlRowUpdatedEventArgs)
    PrintEventArgs(e)
End Sub 'OnRowUpdated

'Entry point which delegates to C-style main Private Function
Public Overloads Shared Sub Main()
    System.Environment.ExitCode = Main(System.Environment.GetCommandLineArgs())
End Sub

Overloads Public Shared Function Main(args() As String) As Integer
    Const CONNECTION_STRING As String = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer"
    Const SELECT_ALL As String = "select * from Products"
    
    ' create DataAdapter
    Dim rAdapter As New SqlDataAdapter(SELECT_ALL, CONNECTION_STRING)
    Dim cb As SqlCommandBuilder = New SqlCommandBuilder(rAdapter)
    
    ' Create and fill dataset (select only first 5 rows)
    Dim rDataSet As New DataSet()
    rAdapter.Fill(rDataSet, 0, 5, "Table")
    
    ' Modify dataSet
    Dim rTable As DataTable = rDataSet.Tables("Table")
    rTable.Rows(0)(1) = "new product"
    
    ' add handlers
    AddHandler rAdapter.RowUpdating, AddressOf OnRowUpdating
    AddHandler rAdapter.RowUpdated, AddressOf OnRowUpdated
    
    ' update, this operation fires two events (RowUpdating/RowUpdated) per changed row 
    rAdapter.Update(rDataSet, "Table")
    
    ' remove handlers
    RemoveHandler rAdapter.RowUpdating, AddressOf OnRowUpdating
    RemoveHandler rAdapter.RowUpdated, AddressOf OnRowUpdated
    Return 0
End Function 'Main


Overloads Protected Shared Sub PrintEventArgs(args As SqlRowUpdatingEventArgs)
    Console.WriteLine("OnRowUpdating")
    Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
                    " commandType=" & args.StatementType & " status=" & args.Status & ")")
End Sub 'PrintEventArgs


Overloads Protected Shared Sub PrintEventArgs(args As SqlRowUpdatedEventArgs)
    Console.WriteLine("OnRowUpdated")
    Console.WriteLine("  event args: (" & " command=" & args.Command.CommandText & _
                    " commandType=" & args.StatementType & " recordsAffected=" & _
                    args.RecordsAffected & " status=" & args.Status & ")")
End Sub 'PrintEventArgs
End Class 'Form1

[C#] 
// handler for RowUpdating event
 protected static void OnRowUpdating(object sender, SqlRowUpdatingEventArgs e) {
    PrintEventArgs(e);
 }
 
 // handler for RowUpdated event
 protected static void OnRowUpdated(object sender, SqlRowUpdatedEventArgs e) {
    PrintEventArgs(e);
 }
 
 public static int Main(String[] args) {
    const string CONNECTION_STRING = "Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer";
    const string SELECT_ALL = "select * from Products";
 
    // create DataAdapter
    SqlDataAdapter rAdapter = new SqlDataAdapter(SELECT_ALL, CONNECTION_STRING);
    SqlCommandBuilder cb = new SqlCommandBuilder(rAdapter);
 
    // Create and fill dataset (select only first 5 rows)
    DataSet rDataSet = new DataSet();
    rAdapter.Fill(rDataSet, 0, 5, "Table");
 
    // Modify dataSet
    DataTable rTable = rDataSet.Tables["Table"];
    rTable.Rows[0][1] = "new product";
 
    // add handlers
    rAdapter.RowUpdating += new SqlRowUpdatingEventHandler( OnRowUpdating );
    rAdapter.RowUpdated += new SqlRowUpdatedEventHandler( OnRowUpdated );
 
    // update, this operation fires two events (RowUpdating/RowUpdated) per changed row 
    rAdapter.Update(rDataSet, "Table");
 
    // remove handlers
    rAdapter.RowUpdating -= new SqlRowUpdatingEventHandler( OnRowUpdating );
    rAdapter.RowUpdated -= new SqlRowUpdatedEventHandler( OnRowUpdated );
    return 0;
 }
 
 protected static void PrintEventArgs(SqlRowUpdatingEventArgs args) {
    Console.WriteLine("OnRowUpdating");
    Console.WriteLine("  event args: ("+
           " command=" + args.Command + 
           " commandType=" + args.StatementType + 
           " status=" + args.Status + ")");
 }
 
 protected static void PrintEventArgs(SqlRowUpdatedEventArgs args) {
    Console.WriteLine("OnRowUpdated");
    Console.WriteLine( "  event args: ("+
           " command=" + args.Command +
           " commandType=" + args.StatementType + 
           " recordsAffected=" + args.RecordsAffected + 
           " status=" + args.Status + ")" );
 }

[C++] 
protected:
// handler for RowUpdating event
 static void OnRowUpdating(Object* /*sender*/, SqlRowUpdatingEventArgs* e) {
    PrintEventArgs(e);
 }
 
 // handler for RowUpdated event
 static void OnRowUpdated(Object* /*sender*/, SqlRowUpdatedEventArgs* e) {
    PrintEventArgs(e);
 }

public:
 static int Main() {
    String* CONNECTION_STRING = S"Persist Security Info=False;Integrated Security=SSPI;database=northwind;server=mySQLServer";
    String* SELECT_ALL = S"select * from Products";
 
    // create DataAdapter
    SqlDataAdapter* rAdapter = new SqlDataAdapter(SELECT_ALL, CONNECTION_STRING);
    SqlCommandBuilder* cb = new SqlCommandBuilder(rAdapter);
 
    // Create and fill dataset (select only first 5 rows)
    DataSet* rDataSet = new DataSet();
    rAdapter->Fill(rDataSet, 0, 5, S"Table");
 
    // Modify dataSet
    DataTable* rTable = rDataSet->Tables->Item[S"Table"];
    rTable->Rows->Item[0]->Item[1] = S"new product";
 
    // add handlers
    rAdapter->RowUpdating += new SqlRowUpdatingEventHandler(0,  OnRowUpdating );
    rAdapter->RowUpdated += new SqlRowUpdatedEventHandler(0,  OnRowUpdated );
 
    // update, this operation fires two events (RowUpdating/RowUpdated) per changed row 
    rAdapter->Update(rDataSet, S"Table");
 
    // remove handlers
    rAdapter->RowUpdating -= new SqlRowUpdatingEventHandler(0,  OnRowUpdating );
    rAdapter->RowUpdated -= new SqlRowUpdatedEventHandler(0,  OnRowUpdated );
    return 0;
 }
 
protected:
 static void PrintEventArgs(SqlRowUpdatingEventArgs* args) {
    Console::WriteLine(S"OnRowUpdating");
    Console::WriteLine(String::Format( S"  event args: ( command={0} commandType={1} status={2})", args->Command, __box(args->StatementType), __box(args->Status)));
 }
 
 static void PrintEventArgs(SqlRowUpdatedEventArgs* args) {
    Console::WriteLine(S"OnRowUpdated");
    Console::WriteLine(String::Concat(
       String::Format( S"  event args: ( command={0} commandType={1} ", args->Command, __box(args->StatementType) ),
       String::Format( S"recordsAffected={0} status={1})", __box(args->RecordsAffected), __box(args->Status) )));
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ

参照

SqlDataAdapter クラス | SqlDataAdapter メンバ | System.Data.SqlClient 名前空間