ヘッダーをスキップ
Oracle Data Provider for .NET開発者ガイド
11gリリース1(11.1.0.6.20)
E06104-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.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が再実行されるかどうかを決定します

ReturnProviderSpecificTypes


FillメソッドがODP.NET固有の値、または.NET共通言語仕様の値のどちらを返すかを設定します。

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が再実行されるかどうかを決定します

ReturnProviderSpecificTypes


FillメソッドがODP.NET固有の値、または.NET共通言語仕様の値のどちらを返すかを設定します。

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を戻します。

ReturnProviderSpecificTypes

このプロパティは、FillメソッドがODP.NET固有の値、または.NET共通言語仕様の値のどちらを返すかを設定します。

ADO.NET 2.0準拠のODP.NETでのみサポートされています。

宣言

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

プロパティ値

FillメソッドがODP.NET固有の値を返すかどうかを示す値。値がfalseの場合は、Fillメソッドが.NET共通言語仕様に準拠した値を返すことを示します。デフォルトは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に設定されています。

備考

大量のデータでバッチの更新を実行すると、"PLS-00123: Program too large"というエラーが発生する可能性があります。このエラーを回避するため、UpdateBatchSizeのサイズを縮小してより小さな値にします。

変更、追加または削除されているDataSet内の各行について、1つのSQL文がデータベースで実行されます。

値は次のとおりです。

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イベントの「例」を参照してください。