ヘッダーをスキップ
Oracle Data Provider for .NET開発者ガイド
10g リリース2(10.2.0.2)
B31247-01
  目次へ
目次
索引へ
索引

前へ
前へ
 
次へ
次へ
 

OracleDataAdapterクラス

OracleDataAdapterオブジェクトは、DataSetを移入し、DataSetにおける変更をOracleデータベースに反映させるデータ・プロバイダ・オブジェクトを表します。

クラスの継承

System.Object

  System.MarshalByRefObject

    System.ComponentModel.Component

      System.Data.Common.DataAdapter

        System.Data.Common.DbDataAdapter(ADO.NET 2.0のみ)

          Oracle.DataAccess.Client.OracleDataAdapter

宣言

// C#
public sealed class OracleDataAdapter : DbDataAdapter, IDbDataAdapter

スレッド安全性

パブリック静的メソッドはスレッドセーフですが、インスタンス・メソッドではスレッド安全性は保証されません。

次の例では、EMP表の更新にOracleDataAdapterおよびデータセットが使用されています。

// C#

using System;
using System.Data;
using Oracle.DataAccess.Client;

class OracleDataAdapterSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    string cmdstr = "SELECT empno, sal from emp";

    // Create the adapter with the selectCommand txt and the
    // connection string
    OracleDataAdapter adapter = new OracleDataAdapter(cmdstr, constr);

    // Create the builder for the adapter to automatically generate
    // the Command when needed
    OracleCommandBuilder builder = new OracleCommandBuilder(adapter);

    // Create and fill the DataSet using the EMP
    DataSet dataset = new DataSet();
    adapter.Fill(dataset, "EMP");

    // Get the EMP table from the dataset
    DataTable table = dataset.Tables["EMP"];

    // Indicate DataColumn EMPNO is unique
    // This is required by the OracleCommandBuilder to update the EMP table
    table.Columns["EMPNO"].Unique = true;

    // Get the first row from the EMP table
    DataRow row = table.Rows[0];

    // Update the salary
    double sal = double.Parse(row["SAL"].ToString());
    row["SAL"] = sal + .01;

    // Now update the EMP using the adapter
    // The OracleCommandBuilder will create the UpdateCommand for the
    // adapter to update the EMP table
    adapter.Update(dataset, "EMP");

    Console.WriteLine("Row updated successfully");
  }
}

要件

ネームスペース: Oracle.DataAccess.Client

アセンブリ: Oracle.DataAccess.dll

Microsoft .NET Frameworkバージョン: 1.xまたは2.0


OracleDataAdapterメンバー

OracleDataAdapterメンバーは、次の表にリストされています。

OracleDataAdapterコンストラクタ

OracleDataAdapterコンストラクタのリストを、表5-29に示します。

表5-29 OracleDataAdapterコンストラクタ

コンストラクタ 説明

OracleDataAdapterコンストラクタ

OracleDataAdapterクラスの新規インスタンスをインスタンス化します(オーバーロード)


OracleDataAdapter静的メソッド

OracleDataAdapter静的メソッドのリストを、表5-30に示します。

表5-30 OracleDataAdapter静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)


OracleDataAdapterプロパティ

OracleDataAdapterプロパティのリストを、表5-31に示します。

表5-31 OracleDataAdapterプロパティ

名前 説明

AcceptChangesDuringFill

System.Data.Common.DataAdapterからの継承

Container

System.ComponentModel.Componentからの継承

ContinueUpdateOnError

System.Data.Common.DataAdapterからの継承

DeleteCommand

Oracleデータベースから行を削除する、SQL文またはストアド・プロシージャ

InsertCommand

Oracleデータベースに新しい行を挿入する、SQL文またはストアド・プロシージャ

MissingMappingAction

System.Data.Common.DataAdapterからの継承

MissingSchemaAction

System.Data.Common.DataAdapterからの継承

Requery

Fillへの次コールでSelectCommandが再実行されるかどうかを決定します

SafeMapping

データを保存するため、.NETタイプに結果セット内の列名間のマッピングを作成します

SelectCommand

単一または複数の結果セットを戻すSQL文またはストアド・プロシージャ

Site

System.ComponentModel.Componentからの継承

TableMappings

System.Data.Common.DataAdapterからの継承

UpdateBatchSize


バッチ処理サポートを有効または無効にする値を指定し、データベースへの1回のラウンドトリップで実行できるSQL文の数を指定します

ADO.NET 2.0準拠のODP.NETでのみサポート

UpdateCommand

DataSetからOracleデータベースへ行を更新するSQL文またはストアド・プロシージャ


OracleDataAdapterパブリック・メソッド

OracleDataAdapterパブリック・メソッドのリストを、表5-32に示します。

表5-32 OracleDataAdapterパブリック・メソッド

パブリック・メソッド 説明

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

Equals

System.Objectからの継承(オーバーロード)

Fill

Oracleデータベース内のデータと一致させるため、DataSet内の行を追加またはリフレッシュします(オーバーロード)

FillSchema

System.Data.Common.DbDataAdapterからの継承

GetFillParameters

System.Data.Common.DbDataAdapterからの継承

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

ToString

System.Objectからの継承

Update

System.Data.Common.DbDataAdapterからの継承


OracleDataAdapterイベント

OracleDataAdapterイベントのリストを、表5-33に示します。

表5-33 OracleDataAdapterイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

FillError

System.Data.Common.DbDataAdapterからの継承

RowUpdated

このイベントは、Update()メソッドによって行が更新された場合に発生します

RowUpdating

このイベントは、データベースに行データを更新するときに発生します



OracleDataAdapterコンストラクタ

OracleDataAdapterコンストラクタは、OracleDataAdapterクラスの新規インスタンスを作成します。

オーバーロード・リスト:

OracleDataAdapter()

このコンストラクタは、OracleDataAdapterクラスのインスタンスを引数なしで作成します。

宣言

// C#
public OracleDataAdapter();

備考

初期値は、OracleDataAdapterプロパティに対して、次に示すように設定されています。

OracleDataAdapter(OracleCommand)

このコンストラクタは、SelectCommandとして指定されたOracleCommandOracleDataAdapterクラスのインスタンスを作成します。

宣言

// C#
public OracleDataAdapter(OracleCommand selectCommand);

パラメータ

備考

初期値は、OracleDataAdapterプロパティに対して、次に示すように設定されています。

OracleDataAdapter(string, OracleConnection)

このコンストラクタは、指定されたOracleConnectionオブジェクトおよびSelectCommandのコマンド・テキストで、OracleDataAdapterクラスのインスタンスを作成します。

宣言

// C#
public OracleDataAdapter(string selectCommandText, OracleConnection
    selectConnection);

パラメータ

備考

OracleDataAdapterは、まだオープンしていない場合、接続をオープンおよびクローズします。接続がオープンしている場合は、明示的にクローズする必要があります。

初期値は、OracleDataAdapterプロパティに対して、次に示すように設定されています。

OracleDataAdapter(string, string)

このコンストラクタは、SelectCommandの指定された接続文字列およびコマンド・テキストで、OracleDataAdapterクラスのインスタンスを作成します。

宣言

// C#
public OracleDataAdapter(string selectCommandText, string
   selectConnectionString);

パラメータ

備考

初期値は、OracleDataAdapterプロパティに対して、次に示すように設定されています。


OracleDataAdapter静的メソッド

OracleDataAdapter静的メソッドのリストを、表5-34に示します。

表5-34 OracleDataAdapter静的メソッド

メソッド 説明

Equals

System.Objectからの継承(オーバーロード)



OracleDataAdapterプロパティ

OracleDataAdapterプロパティのリストを、表5-35に示します。

表5-35 OracleDataAdapterプロパティ

名前 説明

AcceptChangesDuringFill

System.Data.Common.DataAdapterからの継承

Container

System.ComponentModel.Componentからの継承

ContinueUpdateOnError

System.Data.Common.DataAdapterからの継承

DeleteCommand

Oracleデータベースから行を削除する、SQL文またはストアド・プロシージャ

InsertCommand

Oracleデータベースに新しい行を挿入する、SQL文またはストアド・プロシージャ

MissingMappingAction

System.Data.Common.DataAdapterからの継承

MissingSchemaAction

System.Data.Common.DataAdapterからの継承

Requery

Fillへの次コールでSelectCommandが再実行されるかどうかを決定します

SafeMapping

データを保存するため、.NETタイプに結果セット内の列名間のマッピングを作成します

SelectCommand

単一または複数の結果セットを戻すSQL文またはストアド・プロシージャ

Site

System.ComponentModel.Componentからの継承

TableMappings

System.Data.Common.DataAdapterからの継承

UpdateBatchSize


バッチ処理サポートを有効または無効にする値を指定し、データベースへの1回のラウンドトリップで実行できるSQL文の数を指定します

ADO.NET 2.0準拠のODP.NETでのみサポート

UpdateCommand

DataSetからOracleデータベースへ行を更新するSQL文またはストアド・プロシージャ


DeleteCommand

このプロパティは、Oracleデータベースから行を削除するSQL文またはストアド・プロシージャです。

宣言

// C#
public OracleCommand DeleteCommand {get; set;}

プロパティ値

DataSet内の削除した行に対応するOracleデータベースの表から行を削除するため、Updateコール中に使用されるOracleCommand

備考

デフォルト = null

DataSet内に主キー情報があり、かつコマンドが指定されていない場合は、OracleCommandBuilderを使用してDeleteCommandが自動的に生成されます。

InsertCommand

このプロパティは、Oracleデータベースに新しい行を挿入するSQL文またはストアド・プロシージャです。

宣言

// C#
public OracleCommand InsertCommand {get; set;}

プロパティ値

Updateコール中に使用されるOracleCommandは、DataSet内に追加された行に対応して、表に行を追加します。

備考

デフォルト = null

DataSet内に主キー情報があり、かつコマンドが指定されていない場合は、OracleCommandBuilderを使用してInsertCommandが自動的に生成されます。

Requery

このプロパティは、Fillへの次コールでSelectCommandが再実行されるかどうかを決定します。

宣言

// C#
public Boolean Requery {get; set;}

プロパティ値

Fillへの次コールでSelectCommandが再実行される場合はtrueを戻し、それ以外の場合はfalseを戻します。

SafeMapping

このプロパティでは、データを保存するため、DataSet内の列値を表す.NETタイプに、結果セット内の列名間のマッピングを作成します。

宣言

// C#
public Hashtable SafeMapping {get; set;}

プロパティ値

ハッシュ・テーブル

備考

デフォルト = null

次のタイプのデータを保存するため、必要に応じてSafeMappingプロパティが使用されます。

詳細は、「OracleDataAdapter Safeタイプ・マッピング」の例を参照してください。

SelectCommand

このプロパティは、単一または複数の結果セットを戻すSQL文またはストアド・プロシージャです。

宣言

// C#
public OracleCommand SelectCommand {get; set;}

プロパティ値

Fillコール中にOracleCommandを使用して、選択した行をDataSetに移入します。

備考

デフォルト = null

SelectCommandで戻される行がない場合は、データセットに表は追加されず、例外も発生しません。

SELECT文がVIEWから選択される場合、FillSchema()またはMissingSchemaAction.AddWithKeyのあるFill()が起動されるときに、キー情報は取得されません。

UpdateBatchSize

このプロパティは、バッチ処理サポートを有効または無効にする値を指定し、データベースへの1回のラウンドトリップで実行できるSQL文の数を指定します。

ADO.NET 2.0準拠のODP.NETでのみサポート

宣言

// C#
public virtual int UpdateBatchSize {get; set;}

プロパティ値

バッチ・サイズを戻す整数

例外

ArgumentOutOfRangeException: 値が0未満に設定されています。

備考

値は次のとおりです。

UpdateCommand

このプロパティは、DataSetからOracleデータベースへ、行を更新するSQL文またはストアド・プロシージャです。

宣言

// C#
public OracleCommand UpdateCommand {get; set;}

プロパティ値

Oracleデータベース内では、Updateコール中にOracleCommandを使用して行を更新します。更新行はDataSet内で更新された行に対応しています。

備考

デフォルト = null

DataSet内に主キー情報があり、このプロパティにコマンドが指定されていない場合は、OracleCommandBuilderが使用され、UpdateCommandが自動的に生成されます。


OracleDataAdapterパブリック・メソッド

OracleDataAdapterパブリック・メソッドのリストを、表5-36に示します。

表5-36 OracleDataAdapterパブリック・メソッド

パブリック・メソッド 説明

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

Equals

System.Objectからの継承(オーバーロード)

Fill

Oracleデータベース内のデータと一致させるため、DataSet内の行を追加またはリフレッシュします(オーバーロード)

FillSchema

System.Data.Common.DbDataAdapterからの継承

GetFillParameters

System.Data.Common.DbDataAdapterからの継承

GetHashCode

System.Objectからの継承

GetLifetimeService

System.MarshalByRefObjectからの継承

GetType

System.Objectからの継承

InitializeLifetimeService

System.MarshalByRefObjectからの継承

ToString

System.Objectからの継承

Update

System.Data.Common.DbDataAdapterからの継承


Fill

Fillは、指定されたDataTableまたはDataSetを移入またはリフレッシュします。

オーバーロード・リスト:

Fill(DataTable, OracleRefCursor)

このメソッドは、指定されたOracleRefCursorオブジェクトに行を一致させるために、指定されたDataTableに追加またはリフレッシュします。

宣言

// C#
public int Fill(DataTable dataTable, OracleRefCursor refCursor);

パラメータ

戻り値

DataTableに行数が追加またはリフレッシュされました。

例外

ArgumentNullException: dataTableまたはrefCursorパラメータがNULLです。

InvalidOperationException: OracleRefCursorはすでにデータのフェッチに使用されました。

NotSupportedException: SafeMappingタイプはサポートされていません。

備考

スキームまたは情報は、MissingSchemaAction.AddWithKeyに設定されたMissingSchemaActionFillメソッドがコールされた場合、指定されません。

Fill(DataSet, OracleRefCursor)

このメソッドは、OracleRefCursorオブジェクトに行を一致させるために、指定されたDataSetに追加またはリフレッシュします。

宣言

// C#
public int Fill(DataSet dataSet, OracleRefCursor refCursor);

パラメータ

戻り値

DataSetに追加またはリフレッシュされた行数が戻されました。

例外

ArgumentNullException: dataSetまたはrefCursorパラメータがNULLです。

InvalidOperationException: OracleRefCursorはすでにデータのフェッチに使用されました。

InvalidOperationException: OracleRefCursorはデータをフェッチする準備ができています。

NotSupportedException: SafeMappingタイプはサポートされていません。

備考

リフレッシュするDataTableがない場合、Tableと命名された新しいDataTableが指定されたOracleRefCursorオブジェクトを使用して作成または移入されました。

スキームまたは情報は、MissingSchemaAction.AddWithKeyに設定されたMissingSchemaActionFillメソッドがコールされた場合、指定されません。

Fill(DataSet, string, OracleRefCursor)

このメソッドは、DataSetの指定されたソース・テーブルに行を追加またはリフレッシュして、指定されたOracleRefCursorオブジェクトに行を一致させます。

宣言

// C#
public int Fill(DataSet dataSet, string srcTable, OracleRefCursor
   refCursor);

パラメータ

戻り値

DataSetに追加またはリフレッシュされた行数を戻します。

例外

ArgumentNullException: dataSetまたはrefCursorパラメータがNULLです。

InvalidOperationException: OracleRefCursorはすでにデータのフェッチに使用されたか、またはソース・テーブル名が無効です。

NotSupportedException: SafeMappingタイプはサポートされていません。

備考

スキームまたは情報は、MissingSchemaAction.AddWithKeyに設定されたMissingSchemaActionFillメソッドがコールされた場合、指定されません。

Fill(DataSet, int, int, string, OracleRefCursor)

このメソッドは、DataSetに指定された範囲に行を追加またはリフレッシュして、指定されたOracleRefCursorオブジェクトに行を一致させます。

宣言

// C#
public int Fill(DataSet dataSet, int startRecord, int maxRecords,
   string srcTable, OracleRefCursor refCursor);

パラメータ

戻り値

このメソッドは、DataSetに追加またはリフレッシュされた行数を戻します。これには、行を戻さない文の影響を受ける行は含まれません。

例外

ArgumentNullException: dataSetまたはrefCursorパラメータがNULLです。

InvalidOperationException: OracleRefCursorはすでにデータのフェッチに使用されたか、またはソース・テーブル名が無効です。

NotSupportedException: SafeMappingタイプはサポートされていません。

備考

スキームまたは情報は、MissingSchemaAction.AddWithKeyに設定されたMissingSchemaActionFillメソッドがコールされた場合、指定されません。


OracleDataAdapterイベント

OracleDataAdapterイベントのリストを、表5-37に示します。

表5-37 OracleDataAdapterイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

FillError

System.Data.Common.DbDataAdapterからの継承

RowUpdated

このイベントは、Update()メソッドによって行が更新された場合に発生します

RowUpdating

このイベントは、データベースに行データを更新するときに発生します


RowUpdated

このイベントは、Update()メソッドで行が更新された場合に発生します。

宣言

// C#
public event OracleRowUpdatedEventHandler RowUpdated;

イベント・データ

イベント・ハンドラはOracleRowUpdatedEventArgsオブジェクトを受信し、イベントに関する情報を含む次のプロパティが、オブジェクトにより公開されます。

次の例では、RowUpdatingイベントおよびRowUpdatedイベントの使用方法を示します。

// C#

using System;
using System.Data;
using Oracle.DataAccess.Client;

class RowUpdatedSample
{
  // Event handler for RowUpdating event
  protected static void OnRowUpdating(object sender,
                                      OracleRowUpdatingEventArgs e)
  {
    Console.WriteLine("Row updating.....");
    Console.WriteLine("Event arguments:");
    Console.WriteLine("Command Text: " + e.Command.CommandText);
    Console.WriteLine("Command Type: " + e.StatementType);
    Console.WriteLine("Status: " + e.Status);
  }

  // Event handler for RowUpdated event
  protected static void OnRowUpdated(object sender,
                                     OracleRowUpdatedEventArgs e)
  {
    Console.WriteLine("Row updated.....");
    Console.WriteLine("Event arguments:");
    Console.WriteLine("Command Text: " + e.Command.CommandText);
    Console.WriteLine("Command Type: " + e.StatementType);
    Console.WriteLine("Status: " + e.Status);
  }

  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    string cmdstr = "SELECT EMPNO, ENAME, SAL FROM EMP";

    // Create the adapter with the selectCommand txt and the
    // connection string
    OracleDataAdapter adapter = new OracleDataAdapter(cmdstr, constr);

    // Create the builder for the adapter to automatically generate
    // the Command when needed
    OracleCommandBuilder builder = new OracleCommandBuilder(adapter);

    // Create and fill the DataSet using the EMP
    DataSet dataset = new DataSet();
    adapter.Fill(dataset, "EMP");

    // Get the EMP table from the dataset
    DataTable table = dataset.Tables["EMP"];

    // Indicate DataColumn EMPNO is unique
    // This is required by the OracleCommandBuilder to update the EMP table
    table.Columns["EMPNO"].Unique = true;

    // Get the first row from the EMP table
    DataRow row = table.Rows[0];

    // Update the salary
    double sal = double.Parse(row["SAL"].ToString());
    row["SAL"] = sal + .01;

    // Set the event handlers for the RowUpdated and the RowUpdating event
    // the OnRowUpdating() method will be triggered before the update, and
    // the OnRowUpdated() method will be triggered after the update
    adapter.RowUpdating += new OracleRowUpdatingEventHandler(OnRowUpdating);
    adapter.RowUpdated += new OracleRowUpdatedEventHandler(OnRowUpdated);

    // Now update the EMP using the adapter
    // The OracleCommandBuilder will create the UpdateCommand for the
    // adapter to update the EMP table
    // The OnRowUpdating() and the OnRowUpdated() methods will be triggered
    adapter.Update(dataset, "EMP");
  }
}

RowUpdating

このイベントは、データベースに行データを更新するときに発生します。

宣言

// C#
public event OracleRowUpdatingEventHandler RowUpdating;

イベント・データ

イベント・ハンドラはOracleRowUpdatingEventArgsオブジェクトを受信し、イベントに関する情報を含む次のプロパティが、オブジェクトにより公開されます。

RowUpdatedイベントの例では、RowUpdatingイベントの使用方法も表示されています。RowUpdatedイベントの「例」を参照してください。