IDataAdapter.Update(DataSet) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
public:
int Update(System::Data::DataSet ^ dataSet);
public int Update (System.Data.DataSet dataSet);
abstract member Update : System.Data.DataSet -> int
Public Function Update (dataSet As DataSet) As Integer
パラメーター
戻り値
DataSet 内で正常に更新された行の数。
例外
INSERT、UPDATE、DELETE の各ステートメントを実行しようとしましたが、影響を受けたレコードはありませんでした。
例
次の例では、 OleDbDataAdapter派生クラス である をデータ ソースに Update 使用します。 この例では、 と DataSetがOleDbDataAdapter作成されていることを前提としています。
static private DataSet CreateCommandAndUpdate(
string connectionString,
string queryString)
{
DataSet dataSet = new DataSet();
using (OleDbConnection connection =
new OleDbConnection(connectionString))
{
connection.Open();
OleDbDataAdapter adapter =
new OleDbDataAdapter();
adapter.SelectCommand =
new OleDbCommand(queryString, connection);
OleDbCommandBuilder builder =
new OleDbCommandBuilder(adapter);
adapter.Fill(dataSet);
// Code to modify data in the DataSet here.
// Without the OleDbCommandBuilder, this line would fail.
adapter.UpdateCommand = builder.GetUpdateCommand();
adapter.Update(dataSet);
}
return dataSet;
}
Public Function CreateCommandAndUpdate( _
ByVal connectionString As String, _
ByVal queryString As String) As DataSet
Dim dataSet As New DataSet()
Using connection As New OleDbConnection(connectionString)
connection.Open()
Dim adapter As New OleDbDataAdapter()
adapter.SelectCommand = New OleDbCommand( _
queryString, connection)
Dim builder As OleDbCommandBuilder = _
New OleDbCommandBuilder(adapter)
adapter.Fill(dataSet)
' Code to modify the data in the DataSet here.
' Without the OleDbCommandBuilder this line would fail.
builder.GetUpdateCommand()
adapter.Update(dataSet)
End Using
Return dataSet
End Function
注釈
アプリケーションが メソッドを Update 呼び出すと、 IDataAdapter によって プロパティが RowState 調べられ、 で DataSet構成されたインデックスの順序に基づいて、各行に必要な INSERT、UPDATE、または DELETE ステートメントが繰り返し実行されます。 たとえば、 Update 内の行が順序付けされているため、DELETE ステートメントを実行し、その後に INSERT ステートメントを実行し、次に別の DELETE ステートメントを DataTable実行する場合があります。
これらのステートメントはバッチ 処理として実行されないことに注意してください。各行は個別に更新されます。 ステートメント型の GetChanges シーケンス (たとえば、UPDATEs の前の INSERT) を制御する必要がある場合、アプリケーションは メソッドを呼び出すことができます。 詳しくは、「DataAdapter によるデータ ソースの更新」をご覧ください。
INSERT、UPDATE、または DELETE ステートメントが指定されていない場合、メソッドは Update 例外を生成します。 ただし、 または OleDbCommandBuilder オブジェクトをSqlCommandBuilder作成して、.NET Framework データ プロバイダーの プロパティを設定SelectCommand
すると、単一テーブル更新用の SQL ステートメントを自動的に生成できます。 その後、設定しない追加の SQL ステートメントは、CommandBuilder によって生成されます。 この生成ロジックでは、 にキー列情報が存在 DataSetする必要があります。 詳細については、「 CommandBuilders を使用したコマンドの生成」を参照してください。
メソッドは Update 、更新を実行する前に、最初のマッピングに一覧表示されているテーブルから行を取得します。 Update次に、 プロパティの値を使用して行をUpdatedRowSource更新します。 返される追加の行は無視されます。
データが に読み込まれた後、DataSetOnRowUpdatedイベントが発生し、ユーザーは調整されたDataSet行とコマンドによって返されるすべての出力パラメーターを検査できます。 行が正常に更新されると、その行に対する変更が受け入れられます。
を使用 Updateする場合、実行の順序は次のようになります。
内の DataRow 値は、パラメーター値に移動されます。
OnRowUpdating イベントが発生します。
コマンドが実行されます。
コマンドが に
FirstReturnedRecord
設定されている場合、最初に返された結果は に DataRow格納されます。出力パラメーターがある場合は、 に配置されます DataRow。
OnRowUpdated イベントが発生します。
AcceptChanges が呼ばれたとき。
に関連付 IDataAdapter けられている各コマンドには、通常、パラメーター コレクションが関連付けられています。 パラメーターは、.NET Framework データ プロバイダーの クラスの および SourceVersion
プロパティを使用してSourceColumn
、現在のParameter
行にマップされます。
SourceColumn
は、現在の DataTable 行のパラメーター値を IDataAdapter 取得するために 参照する列を参照します。
SourceColumn
は、テーブル マッピングが適用される前のマップされていない列名を参照します。 存在しない列を参照している場合 SourceColumn
、実行されるアクションは次 MissingMappingAction のいずれかの値によって異なります。
列挙値 | 実行されたアクション |
---|---|
MissingMappingAction.Passthrough |
マッピングが存在しない場合は、 で DataSet ソース列名とテーブル名を使用します。 |
MissingMappingAction.Ignore |
SystemExceptionが生成されます。 マッピングが明示的に設定されている場合、入力パラメーターの不足しているマッピングは通常、エラーが原因で発生します。 |
MissingMappingAction.Error |
SystemExceptionが生成されます。 |
プロパティは SourceColumn
、出力パラメーターまたは入出力パラメーターの値を にマップするためにも使用されます DataSet
。 存在しない列を参照している場合は、例外が生成されます。
.NET Framework データ プロバイダーの クラスの プロパティはSourceVersion
、列値の 、Current
、またはProposed
バージョンのどちらを使用Original
するかを決定Parameter
します。 この機能は、UPDATE ステートメントの WHERE 句に元の値を含めて、オプティミスティック コンカレンシー違反をチェックするためによく使用されます。
注意
行の更新中にエラーが発生すると、例外がスローされ、更新の実行が中止されます。 エラーが発生したときに例外を生成せずに更新操作を続行するには、 を呼び出すUpdate前に プロパティを ContinueUpdateOnError にtrue
設定します。 DataAdapter のイベント内で、行ごとにエラーに RowUpdated
応答することもできます。 イベント内RowUpdated
で例外を生成せずに更新操作を続行するには、 の RowUpdatedEventArgs プロパティを Status に設定しますContinue。
適用対象
.NET