SqlDataAdapter.RowUpdating イベント
Update 処理中に、データ ソースに対してコマンドが実行される前に発生します。更新が試行されると、このイベントが発生します。
Public Event RowUpdating As SqlRowUpdatingEventHandler
[C#]
public event SqlRowUpdatingEventHandler RowUpdating;
[C++]
public: __event SqlRowUpdatingEventHandler* RowUpdating;
[JScript] JScript では、このクラスで定義されているイベントを処理できます。ただし、独自に定義することはできません。
イベント データ
イベント ハンドラが、このイベントに関連するデータを含む、SqlRowUpdatingEventArgs 型の引数を受け取りました。次の SqlRowUpdatingEventArgs プロパティには、このイベントの固有の情報が記載されます。
プロパティ | 説明 |
---|---|
Command | Update の実行時に実行する SqlCommand を取得または設定します。 |
Errors (RowUpdatingEventArgs から継承されます) | Command の実行時に .NET Framework データ プロバイダが生成したエラーを取得します。 |
Row (RowUpdatingEventArgs から継承されます) | Update を通じて送信する DataRow を取得します。 |
StatementType (RowUpdatingEventArgs から継承されます) | 実行する SQL ステートメントの種類を取得します。 |
Status (RowUpdatingEventArgs から継承されます) | Command プロパティの UpdateStatus を取得します。 |
TableMapping (RowUpdatingEventArgs から継承されます) | Update を通じて送信する DataTableMapping を取得します。 |
解説
Update を使用すると、データ行が更新されるたびに 2 つのイベントが発生します。次の順序で処理が実行されます。
- DataRow 内の値が、パラメータ値に移動されます。
- OnRowUpdating イベントが発生します。
- コマンドが実行されます。
- コマンドが FirstReturnedRecord に設定されている場合は、最初に返された結果が DataRow に格納されます。
- 出力パラメータがある場合は、それが DataRow に格納されます。
- OnRowUpdated イベントが発生します。
- 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 名前空間