ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
12c リリース1(12.1)
B72971-07
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleDataAdapterクラス

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

クラスの継承

System.Object

  System.MarshalByRefObject

    System.ComponentModel.Component

      System.Data.Common.DataAdapter

        System.Data.Common.DbDataAdapter

          Oracle.DataAccess.Client.OracleDataAdapter

宣言

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

要件

プロバイダ ODP.NET管理対象外ドライバ ODP.NET管理対象ドライバ
アセンブリ Oracle.DataAccess.dll Oracle.ManagedDataAccess.dll
ネームスペース Oracle.DataAccess.Client Oracle.ManagedDataAccess.Client
.NET Framework 3.5, 4.0, 4.5 4.0, 4.5

スレッド安全性

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

次の例では、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");
  }
}

OracleDataAdapterメンバー

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

OracleDataAdapterコンストラクタ

OracleDataAdapterコンストラクタを、表6-39にリストします。

表6-39 OracleDataAdapterコンストラクタ

コンストラクタ 説明

OracleDataAdapterコンストラクタ

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


OracleDataAdapter静的メソッド

OracleDataAdapter静的メソッドを、表6-40にリストします。

表6-40 OracleDataAdapter静的メソッド

メソッド 説明

Equals

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


OracleDataAdapterプロパティ

OracleDataAdapterプロパティを、表6-41にリストします。

表6-41 OracleDataAdapterプロパティ

プロパティ 説明

AcceptChangesDuringFill

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

Container

System.ComponentModel.Componentからの継承

ContinueUpdateOnError

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

DeleteCommand

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

IdentityInsert


Updateメソッドが呼び出されたときに、DataSet内のID列の値をデータベースに挿入するかどうかを判別します

ODP.NET管理対象ドライバでは使用できません

IdentityUpdate


Updateメソッドが呼び出されたときに、DataSet内のID列の値をデータベースで更新するかどうかを判別します

ODP.NET管理対象ドライバでは使用できません

InsertCommand

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

MissingMappingAction

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

MissingSchemaAction

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

Requery

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

ReturnProviderSpecificTypes


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

SafeMapping

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

ODP.NET管理対象ドライバでは使用できません

SelectCommand

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

Site

System.ComponentModel.Componentからの継承

TableMappings

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

UpdateBatchSize


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

UpdateCommand

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


OracleDataAdapterパブリック・メソッド

OracleDataAdapterパブリック・メソッドを、表6-42にリストします。

表6-42 OracleDataAdapterパブリック・メソッド

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

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

Equals

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

Fill

Oracle Database内のデータと一致させるため、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イベントを、表6-43にリストします。

表6-43 OracleDataAdapterイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

FillError

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

RowUpdated

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

RowUpdating

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


OracleDataAdapterコンストラクタ

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

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

  • OracleDataAdapter()

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

  • OracleDataAdapter(OracleCommand)

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

  • OracleDataAdapter(string, OracleConnection)

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

  • OracleDataAdapter(string, string)

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

OracleDataAdapter()

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

宣言

// C#
public OracleDataAdapter();

備考

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

  • MissingMappingAction = MissingMappingAction.Passthrough

  • MissingSchemaAction = MissingSchemaAction.Add

OracleDataAdapter(OracleCommand)

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

宣言

// C#
public OracleDataAdapter(OracleCommand selectCommand);

パラメータ

  • selectCommand

    OracleCommandは、SelectCommandプロパティとてして設定されます。

備考

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

  • MissingMappingAction = MissingMappingAction.Passthrough

  • MissingSchemaAction = MissingSchemaAction.Add

OracleDataAdapter(string, OracleConnection)

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

宣言

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

パラメータ

  • selectCommandText

    この文字列は、OracleDataAdapterSelectCommandプロパティのCommandTextとして設定されます。

  • selectConnection

    OracleConnectionは、Oracle Databaseへの接続に使用されます。

備考

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

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

  • MissingMappingAction = MissingMappingAction.Passthrough

  • MissingSchemaAction = MissingSchemaAction.Add

OracleDataAdapter(string, string)

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

宣言

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

パラメータ

  • selectCommandText

    この文字列は、OracleDataAdapterSelectCommandプロパティのCommandTextとして設定されます。

  • selectConnectionString

    接続文字列です。

備考

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

  • MissingMappingAction = MissingMappingAction.Passthrough

  • MissingSchemaAction = MissingSchemaAction.Add

OracleDataAdapter静的メソッド

OracleDataAdapter静的メソッドを、表6-44にリストします。

表6-44 OracleDataAdapter静的メソッド

メソッド 説明

Equals

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


OracleDataAdapterプロパティ

OracleDataAdapterプロパティを、表6-45にリストします。

表6-45 OracleDataAdapterプロパティ

プロパティ 説明

AcceptChangesDuringFill

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

Container

System.ComponentModel.Componentからの継承

ContinueUpdateOnError

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

DeleteCommand

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

IdentityInsert


Updateメソッドが呼び出されたときに、DataSet内のID列の値をデータベースに挿入するかどうかを判別します

ODP.NET管理対象ドライバでは使用できません

IdentityUpdate


Updateメソッドが呼び出されたときに、DataSet内のID列の値をデータベースで更新するかどうかを判別します

ODP.NET管理対象ドライバでは使用できません

InsertCommand

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

MissingMappingAction

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

MissingSchemaAction

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

Requery

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

ReturnProviderSpecificTypes


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

SafeMapping

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

ODP.NET管理対象ドライバでは使用できません

SelectCommand

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

Site

System.ComponentModel.Componentからの継承

TableMappings

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

UpdateBatchSize


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

UpdateCommand

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


DeleteCommand

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

宣言

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

プロパティ値

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

備考

デフォルト = null

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

IdentityInsert

データベースにDataSetデータを挿入するときに、このプロパティは、挿入先の行でID列の値を生成するのか、DataSetの値をID列の値に挿入するのかを示します。

宣言

// C#
public bool IdentityInsert {get; set;}

プロパティ値

trueに設定すると、ODP.NETはDataSetのID列の値をデータベースに挿入します。falseに設定すると、データベースが挿入先のID列の値を指定します。

備考

このプロパティは、ID列のタイプがGENERATED BY DEFAULTおよびGENERATED BY DEFAULT ON NULLの場合にのみ適用されます。ID列のタイプがGENERATED ALWAYSの場合は、このプロパティは無視され、データベースで生成された値が常に使用されます。

falseに設定されている場合は、サーバーがその行のID値を生成します。この生成されたID値は、DataSet値を更新するために、クライアントに戻されます。

GENERATED BY DEFAULTに対して、このプロパティをtrueに設定している場合、アプリケーションがデータベースのID列にNULL値を挿入しようとすると、NOT NULL制約違反によりエラーが発生します。次に、ODP.NETはデータベースに対してID列の値の生成を許可し、その生成値をDataSetに戻します。

このプロパティのデフォルト値はfalseです。

IdentityUpdate

DataSetデータでデータベースを更新するときに、このプロパティは、DataSetの値でデータベースのID列の値を置き換えるのか、現在の値を変更せずに残すのかを示します。

宣言

// C#
public bool IdentityUpdate {get; set;}

プロパティ値

trueに設定すると、ODP.NETはデータベースのID列の値をDataSetの値で更新します。falseに設定すると、データベースのID列の値は変更されません。

備考

このプロパティは、ID列のタイプがGENERATED BY DEFAULTおよびGENERATED BY DEFAULT ON NULLの場合にのみ適用されます。GENERATED ALWAYSタイプの場合は、このプロパティは無視され、データベースの現在のID値が常に保持されます。

falseに設定すると、サーバー内の既存のID列の値がDataSetに戻されます。

GENERATED BY DEFAULTおよびGENERATED BY DEFAULT ON NULLに対して、このプロパティをtrueに設定している場合、アプリケーションがデータベースのID列をNULL値で更新しようとすると、NOT NULL制約違反によりエラーが発生します。ODP.NETはID列の値を更新せず、かわりにデータベースの既存のID列の値をDataSetに戻します。

このプロパティのデフォルト値はfalseです。

InsertCommand

このプロパティは、Oracle Databaseに新しい行を挿入する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共通言語仕様の値のどちらを返すかを設定します。

宣言

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

プロパティ値

FillメソッドがODP.NET固有の値を返すかどうかを示す値。

ODP.NET 12.1.0.2以降でtrueおよびLegacyEntireLOBFetch = 0に設定している場合(デフォルト)、BLOBおよびCLOB列の値はDataTableでそれぞれOracleBlobおよびOracleClobとして表されます。

値がfalseの場合は、Fillメソッドが.NET共通言語仕様に準拠した値を返すことを示します。デフォルトはfalseです。

SafeMapping

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

宣言

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

プロパティ値

ハッシュ・テーブル

備考

デフォルト = null

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

  • DATE

  • TimeStamp(すべてのTimeStampオブジェクトが対象)

  • INTERVAL DAY TO SECOND

  • NUMBER

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

SelectCommand

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

宣言

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

プロパティ値

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

備考

デフォルト = null

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

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

UpdateBatchSize

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

宣言

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

プロパティ値

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

例外

ArgumentOutOfRangeException - 値は数値<0に設定されています。

備考

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

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

値は次のとおりです。

  • 値 = 0

    データ・アダプタは、すべてのSQL文をデータベースへの1回のラウンド・トリップ内で実行します。

  • 値 = 1 - デフォルト値

    この値はバッチ更新を無効にし、SQL文を一度に実行します。

  • n > 1、値 = n

    データ・アダプタは、データベースへの1回のラウンド・トリップでn行のデータを更新します。

UpdateCommand

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

宣言

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

プロパティ値

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

備考

デフォルト = null

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

OracleDataAdapterパブリック・メソッド

OracleDataAdapterパブリック・メソッドを、表6-46にリストします。

表6-46 OracleDataAdapterパブリック・メソッド

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

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

System.ComponentModel.Componentからの継承

Equals

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

Fill

Oracle Database内のデータと一致させるため、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に追加またはリフレッシュします。

  • Fill(DataSet, OracleRefCursor)

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

  • Fill(DataSet, string, OracleRefCursor)

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

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

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

Fill(DataTable, OracleRefCursor)

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

宣言

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

パラメータ

  • dataTable

    DataTableオブジェクトが移入されました。

  • refCursor

    OracleRefCursorから行が取り出されます。

戻り値

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

    DataSetオブジェクトが移入されました。

  • refCursor

    OracleRefCursorから行が取り出されます。

戻り値

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

    DataSetオブジェクトが移入されました。

  • srcTable

    ソース・テーブルの名前は表のマッピングに使用されます。

  • refCursor

    OracleRefCursorから行が取り出されます。

戻り値

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

    DataSetオブジェクトが移入されました。

  • startRecord

    開始するレコード番号です。

  • maxRecords

    取得するレコードの最大数です。

  • srcTable

    ソース・テーブルの名前は表のマッピングに使用されます。

  • refCursor

    OracleRefCursorから行が取り出されます。

戻り値

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

例外

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

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

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

備考

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

OracleDataAdapterイベント

OracleDataAdapterイベントを、表6-47にリストします。

表6-47 OracleDataAdapterイベント

イベント名 説明

Disposed

System.ComponentModel.Componentからの継承

FillError

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

RowUpdated

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

RowUpdating

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


RowUpdated

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

宣言

// C#
public event OracleRowUpdatedEventHandler RowUpdated;

イベント・データ

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

  • Command

    Update中に実行されたOracleCommand

  • Errors(RowUpdatedEventArgsからの継承)

    例外がある場合は、Update中に生成

  • RecordsAffected(RowUpdatedEventArgsからの継承)

    Commandの実行によって変更、挿入または削除された行数

  • Row(RowUpdatedEventArgsからの継承)

    Updateに対して送信されるDataRow

  • StatementType(RowUpdatedEventArgsからの継承)

    実行されたSQL文のタイプ

  • Status(RowUpdatedEventArgsからの継承)

    CommandUpdateStatus

  • TableMapping(RowUpdatedEventArgsからの継承)

    Update中に使用されたDataTableMapping

次の例では、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オブジェクトを受信し、イベントに関する情報を含む次のプロパティが、オブジェクトにより公開されます。

  • Command

    Update中に実行されたOracleCommand

  • Errors(RowUpdatingEventArgsからの継承)

    例外がある場合は、Update中に生成

  • Row(RowUpdatingEventArgsからの継承)

    Updateに対して送信されるDataRow

  • StatementType(RowUpdatingEventArgsからの継承)

    実行されたSQL文のタイプ

  • Status(RowUpdatingEventArgsからの継承)

    CommandUpdateStatus

  • TableMapping(RowUpdatingEventArgsからの継承)

    Update中に使用されたDataTableMapping

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