Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere サーバー プログラミング » .NET アプリケーションプログラミング » SQL Anywhere .NET データプロバイダー » データへのアクセスとデータの操作 » SADataAdapter オブジェクトを使用したデータのアクセスと操作

 

SADataAdapter オブジェクトを使用したデータの操作

SADataAdapter オブジェクトは、結果セットを DataTable に取り出します。DataSet は、テーブルのコレクション (DataTables) と、これらのテーブル間の関係と制約です。DataSet は、.NET Framework に組み込まれており、データベースへの接続に使用されるデータプロバイダーとは関係ありません。

SADataAdapter を使用する場合、DataTable を設定し、DataTable の変更内容を使用してデータベースを更新するためにデータベースに接続されている必要があります。ただし、DataTable を一度設定すれば、データベースと切断されていても DataTable を修正できます。

変更内容をデータベースに即座に適用したくない場合、WriteXml メソッドを使用して DataSet (データかスキーマまたはその両方を含む) を XML ファイルに書き込むことができます。これによって、後で ReadXml メソッドを使用して DataSet をロードして変更を適用できるようになります。以下では 2 つの例を示します。

ds.WriteXml("Employees.xml");
ds.WriteXml("EmployeesWithSchema.xml", XmlWriteMode.WriteSchema);

詳細については、.NET Framework のマニュアルの WriteXml と ReadXml を参照してください。

Update メソッドを呼び出して変更を DataSet からデータベースに適用すると、SADataAdapter は、実行された変更を分析してから、必要に応じて適切な文 (INSERT、UPDATE、または DELETE) を呼び出します。DataSet を使用する場合、変更 (挿入、更新、または削除) を行うことができるのは、単一テーブルのデータのみです。ジョインに基づく結果セットは更新できません。更新しようとしているローを別のユーザーがロックしている場合、例外がスローされます。

警告

DataSet を変更できるのは、接続が切断されている場合のみです。つまり、データベース内のこれらのローはアプリケーションによってロックされません。DataSet の変更がデータベースに適用されるときに発生する可能性がある競合を解消できるようアプリケーションを設計してください。これは、自分の変更がデータベースに適用される前に自分が修正しているデータを別のユーザーが変更しようとするような場合です。

 SADataAdapter を使用するときの競合の解消

SADataAdapter を使用したテーブルへのローの挿入
SADataAdapter オブジェクトを使用したテーブル内のローの更新
SADataAdapter オブジェクトを使用したテーブルからのローの削除