ヘッダーをスキップ
Oracle® Data Provider for .NET開発者ガイド
11g リリース2 (11.2.0.4)
B66456-02
  目次へ移動
目次
索引へ移動
索引

前
 
次
 

OracleDataReaderクラス

OracleDataReaderオブジェクトは、順方向専用および読取り専用のメモリー内結果セットを表します。

DataSetと異なり、OracleDataReaderオブジェクトは接続されたままであり、一度に1行ずつフェッチします。

次の項に、関連情報が記載されています。

クラスの継承

System.Object

  System.MarshalByRefObject

    System.Data.Common.DataReader

      System.Data.Common.DbDataReader (ADO.NET 2.0専用)

        Oracle.DataAccess.Client.OracleDataReader

宣言

// ADO.NET 2.0: C#
public sealed class OracleDataReader : DbDataReader, IEnumerable, 
   IDataReader, IDisposable, IDataRecord

スレッド安全性

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

備考

OracleDataReaderインスタンスは、OracleCommandオブジェクトのExecuteReaderメソッドへのコールにより構成されます。DataReaderのクローズ後または処理後にアクセスできるプロパティは、IsClosedおよびRecordsAffectedのみです。

オープン・データベース・カーソルの数を最小限にするには、OracleDataReaderオブジェクトを明示的に処理する必要があります。

次のOracleDataReaderの例では、EMP表からデータが取得されます。

/* Database Setup, if you have not done so yet.
connect scott/tiger@oracle 
CREATE TABLE empInfo (
empno NUMBER(4) PRIMARY KEY,
empName VARCHAR2(20) NOT NULL,
hiredate DATE,
salary NUMBER(7,2),
jobDescription Clob,
byteCodes BLOB
);
 
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(1,'KING','SOFTWARE ENGR', '5657');
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(2,'SCOTT','MANAGER', '5960');
commit;
 
*/
 
// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
 
class OracleDataReaderSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    string cmdstr = "SELECT * FROM EMPINFO";
    OracleConnection connection = new OracleConnection(constr);
    OracleCommand cmd = new OracleCommand(cmdstr, con);
 
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Declare the variables to retrieve the data in EmpInfo
    short empNo;
    string empName;
    DateTime hireDate;
    double salary;
    string jobDesc;
    byte[] byteCodes = new byte[10];
 
    // Read the next row until end of row
    while (reader.Read())
    {
      empNo = reader.GetInt16(0);
      Console.WriteLine("Employee number: " + empNo);
      empName = reader.GetString(1);
      Console.WriteLine("Employee name: " + empName);
 
      // The following columns can have NULL value, so it
      //   is important to call IsDBNull before getting the column data
      if (!reader.IsDBNull(2))
      {
        hireDate = reader.GetDateTime(2);
        Console.WriteLine("Hire date: " + hireDate);
      }
 
      if (!reader.IsDBNull(3))
      {
        salary = reader.GetDouble(3);
        Console.WriteLine("Salary: " + salary);
      }
 
      if (!reader.IsDBNull(4))
      {
        jobDesc = reader.GetString(4);
        Console.WriteLine("Job Description: " + jobDesc);
      }
 
      if (!reader.IsDBNull(5))
      {
        long len = reader.GetBytes(5, 0, byteCodes, 0, 10);
 
        Console.Write("Byte codes: ");
        for (int i = 0; i < len; i++)
          Console.Write(byteCodes[i].ToString("x"));
 
        Console.WriteLine();
      }
 
      Console.WriteLine();
    } 
 
    // Clean up
    reader.Dispose();
    con.Dispose();
  }
}

要件

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

アセンブリ: Oracle.DataAccess.dll

ODP.NETのバージョン: ODP.NET for .NET Framework 2.0またはODP.NET for .NET Framework 4


OracleDataReaderメンバー

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

OracleDataReader静的メソッド

OracleDataReader静的メソッドを、表5-43にリストします。

表5-43 OracleDataReader静的メソッド

メソッド 説明

Equals

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


OracleDataReaderプロパティ

OracleDataReaderプロパティを、表5-44にリストします。

表5-44 OracleDataReaderプロパティ

プロパティ 説明

Depth

現在の行に対するネスティングの深さを示す値を取得します

FetchSize

OracleDataReaderの内部キャッシュのサイズを指定します

FieldCount

結果セット内の列数を取得します

HasRows


OracleDataReaderに1つ以上の行があるかどうかを示します

HiddenFieldCount


非表示のOracleDataReader内のフィールド数が取得されます

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

IsClosed

データ・リーダーがクローズされているかどうかを示します

Item

列値を取得します(オーバーロード)

InitialLOBFetchSize


LOB列についてOracleDataReaderが最初にフェッチする量を指定します

InitialLONGFetchSize

OracleDataReaderLONGおよびLONG RAW列に対して最初にフェッチする量を指定します

RecordsAffected

SQL文の実行によって変更、挿入または削除された行数を取得します

RowSize


OracleDataReader内部キャッシュが1行のデータを格納するために必要なメモリー量を取得します。

VisibleFieldCount


非表示ではないOracleDataReader内のフィールド数が取得されます

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


OracleDataReaderパブリック・メソッド

OracleDataReaderパブリック・メソッドを、表5-45にリストします。

表5-45 OracleDataReaderパブリック・メソッド

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

Close

OracleDataReaderをクローズします

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

オブジェクトにより割り当てられたリソースまたはメモリーを解除します

Equals

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

GetBoolean

サポート対象外

GetByte

指定された列のバイト値を戻します

GetBytes

列の指定されたオフセット(バイト表示)から、最高の場合最大バイト数を使用して、指定されたバイト配列を移入します

GetChar

サポート対象外

GetChars

列の指定されたオフセット(文字)から、最高の場合最大文字数を使用して、指定された文字配列を移入します

GetData

サポート対象外

GetDataTypeName

指定された列のODP.NETタイプ名を戻します

GetDateTime

指定された列のDateTime値を戻します

GetDecimal

指定されたNUMBER列のdecimal値を戻します

GetDouble

指定されたNUMBER列またはBINARY_DOUBLE列のdouble値を戻します

GetEnumerator


コレクションから反復するのに使用できるIEnumeratorが戻されます。

GetFieldType

指定された列のTypeを戻します

GetFloat

指定されたNUMBER列またはBINARY_FLOAT列のfloat値を戻します

GetGuid

サポート対象外

GetHashCode

System.Objectからの継承

GetInt16

指定されたNUMBER列のInt16値を戻します

GetInt32

指定されたNUMBER列のInt32値を戻します

GetInt64

指定されたNUMBER列のInt64値を戻します

GetLifetimeService

System.MarshalByRefObjectによる継承

GetName

指定された列名を戻します

GetOracleBFile

指定されたBFILE列のOracleBFileオブジェクトを戻します

GetOracleBinary

指定された列のOracleBinary構造を戻します

GetOracleBlob

指定されたBLOB列のOracleBlobオブジェクトを戻します

GetOracleBlobForUpdate

指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します

GetOracleClob

指定されたCLOB列のOracleClobオブジェクトを戻します

GetOracleClobForUpdate

指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します

GetOracleDate

指定されたDATE列のOracleDate構造を戻します

GetOracleDecimal

指定されたNUMBER列のOracleDecimal構造を戻します

GetOracleIntervalDS

指定されたINTERVAL DAY TO SECOND列のOracleIntervalDS構造を戻します

GetOracleIntervalYM

指定されたINTERVAL YEAR TO MONTH列のOracleIntervalYM構造を戻します

GetOracleRef


指定されたREF列のOracleRefオブジェクトを戻します

GetOracleString

指定された列のOracleString構造を戻します

GetOracleTimeStamp

Oracle TimeStamp列のOracleTimeStamp構造を戻します

GetOracleTimeStampLTZ

指定されたOracle TimeStamp WITH LOCAL TIME ZONE列のOracleTimeStampLTZ構造を戻します

GetOracleTimeStampTZ

指定されたOracle TimeStamp WITH TIME ZONE列のOracleTimeStampTZ構造を戻します

GetOracleXmlType

指定されたXMLType列のOracleXmlTypeオブジェクトを戻します

GetOracleValue

指定された列値をODP.NETタイプとして戻します

GetOracleValues

すべての列値をODP.NETタイプとして取得します

GetOrdinal

指定された列名の0ベースの序数(または索引)を戻します

GetProviderSpecificFieldType


指定された列のプロバイダ固有のタイプを戻します

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

GetProviderSpecificValue


指定した序数の基礎となるプロバイダ固有の値を表すオブジェクトを戻します。

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

GetProviderSpecificValues


基礎となるプロバイダ固有の値を表すオブジェクトの配列を戻します。

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

GetSchemaTable

OracleDataReaderの列メタデータを記述するDataTableを戻します

GetString

指定された列の文字列値を戻します

GetTimeSpan

指定されたINTERVAL DAY TO SECOND列のTimeSpan値を戻します

GetType

System.Objectクラスからの継承

GetValue

列値を.NETタイプとして戻します

GetValues

すべての列値を.NETタイプとして取得します

GetXmlReader

XMLType列の値を.NET XmlTextReaderのインスタンスとして戻します

IsDBNull

列値がNULLかどうかを示します

NextResult

結果の読取り中にデータ・リーダーを次の結果セットに拡張します

Read

結果セットで次の行を読み取ります

ToString

System.Objectからの継承



OracleDataReader静的メソッド

OracleDataReader静的メソッドを、表5-46にリストします。

表5-46 OracleDataReader静的メソッド

メソッド 説明

Equals

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



OracleDataReaderプロパティ

OracleDataReaderプロパティを、表5-47にリストします。

表5-47 OracleDataReaderプロパティ

プロパティ 説明

Depth

現在の行に対するネスティングの深さを示す値を取得します

FetchSize

OracleDataReaderの内部キャッシュのサイズを指定します

FieldCount

結果セット内の列数を取得します

HasRows


OracleDataReaderに1つ以上の行があるかどうかを示します

HiddenFieldCount


非表示のOracleDataReader内のフィールド数が取得されます

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

IsClosed

データ・リーダーがクローズされているかどうかを示します

Item

列値を取得します(オーバーロード)

InitialLOBFetchSize


LOB列についてOracleDataReaderが最初にフェッチする量を指定します

InitialLONGFetchSize

OracleDataReaderLONGおよびLONG RAW列に対して最初にフェッチする量を指定します

RecordsAffected

SQL文の実行によって変更、挿入または削除された行数を取得します

RowSize


OracleDataReader内部キャッシュが1行のデータを格納するために必要なメモリー量を取得します

VisibleFieldCount


非表示ではないOracleDataReader内のフィールド数が取得されます

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


Depth

このプロパティでは、現在の行に対するネスティングの深さを示す値を取得します。

宣言

// ADO.NET 2.0: C#
public override int Depth {get;}

プロパティ値

現在の行に対するネスティングの深さ

実装

IDataReader

例外

InvalidOperationException - リーダーがクローズされています。

備考

デフォルト = 0

Oracleではネスティングがサポートされていないため、このプロパティは常にゼロを戻します。

FetchSize

このプロパティは、OracleDataReaderの内部キャッシュのサイズを指定します。

宣言

// C#
public long FetchSize {get; set;} 

プロパティ値

OracleDataReaderが内部キャッシュに使用するメモリーの量(バイト表示)を指定するlong

例外

ArgumentException - 指定したFetchSize値は無効です。

備考

デフォルト = OracleCommandFetchSizeプロパティ値。

FetchSizeプロパティは、結果セットを戻すコマンドを実行して作成したOracleDataReaderにより、継承されます。OracleDataReaderオブジェクト上のFetchSizeプロパティにより、データベース・ラウンドトリップごとの内部キャッシュにフェッチされるデータ量が決定されます。

RowSizeおよびFetchSizeプロパティは、他のスカラー・データ型とは異なる方法でUDTおよびXMLTypeデータを処理します。ODP.NETの内部キャッシュにはUDTおよびXMLTypeデータへの参照のみが格納されているため、RowSizeプロパティはUDTおよびXMLTypeデータの実際のサイズではなく、参照に必要なメモリー(非常に少量)のみを算定します。その結果、アプリケーションは1回のデータベース・ラウンドトリップで多数のUDTまたはXMLTypeインスタンスをデータベースからフェッチしてしまう可能性があります。これは、UDTおよびXMLTypeデータの実際のサイズがFetchSizeに対するものではなく、デフォルトのキャッシュ・サイズである 131072バイトを満たすには非常に多くのUDTおよびXMLType参照が必要となるためです。したがって、UDTまたはXMLTypeデータをフェッチする際には、フェッチする実際のUDTおよびXMLTypeデータの総量ではなく、対象UDTおよびXMLTypeインスタンスの数を制御するよう、FetchSizeプロパティを適切に構成する必要があります。

注意: LOBおよびLONGデータ型の場合、選択リストの各LOBのキャッシュによって保持されたメタデータおよび参照情報に加えて、InitialLOBFetchSizeおよびInitialLONGFetchSizeプロパティで指定されたサイズのみがRowSizeプロパティによって算定されます。

FieldCount

このプロパティでは、結果セット内の列数を戻します。

宣言

// ADO.NET 2.0: C#
public override int FieldCount {get;}

プロパティ値

列が存在する場合は結果セット内の列数、それ以外は0

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされています。

備考

デフォルト = 0

このプロパティには、結果セットを戻さない問合せに対する0の値が含まれています。

HasRows

このプロパティは、OracleDataReaderに1つ以上の行があるかどうかを示します。

宣言

// ADO.NET 2.0: C#
public override bool HasRows {get;}

戻り値

bool

備考

HasRowsは、OracleDataReaderに行が含まれているかどうかを示します

HasRowsの値が行の位置に基づいて変わることはありません。たとえば、アプリケーションで結果セットから行をすべて読み取り、次のReadメソッドの起動によりFalseが戻される場合でも、結果セットが最初から空であったわけではないので、HasRowsプロパティはTrueを戻します。

OracleDataReaderオブジェクトの作成後にHasRowsプロパティが初めてアクセスされたときに、行がフェッチされ、OracleDataReaderが空かどうかが判断されます。

// C#
 
using System;
using Oracle.DataAccess.Client; 
 
class HasRowsSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    OracleCommand cmd = new OracleCommand(
      "select * from emp where empno = 9999", con);
 
    OracleDataReader reader = cmd.ExecuteReader();
 
    if (!reader.HasRows)
      Console.WriteLine("The result set is empty.");
    else
      Console.WriteLine("The result set is not empty.");
 
    con.Dispose();
  }
}

HiddenFieldCount

このプロパティでは、非表示のOracleDataReader内のフィールド数が取得されます。

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

宣言

// C#
public int HiddenFieldcount { get; }

プロパティ値

非表示のOracleDataReader内のフィールド数が取得されます。

例外

InvalidOperationException - リーダーがクローズされています。

備考

OracleDataReader.FieldCountおよびOracleDataReader.VisibleFieldCountでは、表示できるフィールド・カウントが戻されます。

IsClosed

このプロパティは、データ・リーダーがクローズされているかどうかを示します。

宣言

// ADO.NET 2.0: C#
public override bool IsClosed {get;}

プロパティ値

OracleDataReaderがクローズの状態にある場合はtrueを戻し、それ以外の場合はfalseを戻します。

実装

IDataReader

備考

デフォルト = true

OracleDataReaderのクローズ後にアクセス可能なプロパティは、IsClosedおよびRecordsAffectedのみです。

Item

このプロパティでは、.NETデータ型で列の値を取得します。

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

  • Item [index]

    このプロパティでは、列索引で指定された列の.NET Valueを取得します。

  • Item[string]

    このプロパティでは、列名で指定された列の.NET Valueを取得します。

Item [index]

このプロパティでは、列索引で指定された列の.NET Valueを取得します。

宣言

// ADO.NET 2.0: C#
public override object this[int index] {get;}

パラメータ

  • index

    ゼロベースの列の索引

プロパティ値

指定された列の.NET値

実装

IDataRecord

備考

デフォルト = 適用不可

C#では、このプロパティでこのクラスの索引付けをします。

Item [string]

このプロパティでは、列名で指定された列の.NET Valueを取得します。

宣言

// ADO.NET 2.0: C#
public override object this[string columnName] {get;}

パラメータ

  • columnName

    列の名前です。

プロパティ値

指定された列の.NET Value

実装

IDataRecord

備考

デフォルト = 適用不可

指定された列を列名で特定するには、大/小文字を区別して検索します。これで特定できない場合は、大/小文字を区別せずに検索します。

C#では、このプロパティでこのクラスの索引付けをします。

InitialLOBFetchSize

このプロパティは、OracleDataReaderがLOB列に対して最初にフェッチする量を指定します。

宣言

// C#
public int InitialLOBFetchSize {get;}

プロパティ値

取り出すチャンクのサイズです。

例外

InvalidOperationException - リーダーがクローズされています。

備考

Oracle Database 10gリリース2(10.2)以上では、InitialLOBFetchSizeに対してサポートされている最大値は2GBです。

Oracle Database 10gリリース2(10.2)以前のリリースの場合、InitialLOBFetchSizeに対してサポートされている最大値は32KBです。

デフォルトはOracleCommand.InitialLOBFetchSizeであり、これからこの値が継承されます。

InitialLONGFetchSize

このプロパティでは、OracleDataReaderLONGおよびLONG RAW列に対して最初にフェッチする量を指定します。

宣言

// C#
public long InitialLONGFetchSize {get;}

プロパティ値

取り出すチャンクのサイズです。デフォルトは0です。

例外

InvalidOperationException - リーダーがクローズされています。

備考

InitialLONGFetchSizeに対してサポートされている最大値は32767です。このプロパティがそれより大きい値に設定されている場合は、プロバイダによって32767にリセットされます。

デフォルトはOracleCommand.InitialLONGFetchSizeであり、これからこの値が継承されます。

このプロパティは、OracleDataReaderに対して読取りのみです。

RecordsAffected

このプロパティでは、SQL文の実行によって変更、挿入または削除された行数を取得します。

宣言

// C#
public int RecordsAffected {get;}

プロパティ値

SQL文の実行により影響を受けた行数

実装

IDataReader

備考

デフォルト = 0

-1SELECT文に戻されます。

OracleDataReaderのクローズ後にアクセス可能なプロパティは、IsClosedおよびRecordsAffectedのみです。

RowSize

このプロパティは、OracleDataReaderの内部キャッシュが1行のデータを格納するために必要なメモリー量を取得します。

宣言

// C#
public long RowSize {get;}

プロパティ値

longは、OracleDataReaderが実行された問合せのデータ1行を格納するために必要とするメモリー量(バイト)を示します。

備考

OracleDataReaderオブジェクトが作成されると、RowSizeプロパティはゼロ以外の値に設定されます。このプロパティは、行数に基づいて設計時またはFetchSizeを設定する場合に、設計時または実行時に動的に使用できます。たとえば、OracleDataReaderオブジェクトを有効にして、データベース・ラウンドトリップごとにN行をフェッチするには、OracleDataReader FetchSizeプロパティをRowSize * Nに動的に設定できます。FetchSizeプロパティを適切に有効化するには、特定の結果セットに対してOracleDataReader.Read()を最初に起動する前に設定する必要があることに注意してください。

VisibleFieldCount

このプロパティでは、非表示ではないOracleDataReader内のフィールド数が取得されます。

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

宣言

// C#
public override int VisibleFieldcount { get; }

プロパティ値

非表示ではないフィールド数が取得されます。

例外

InvalidOperationException - リーダーがクローズされています。

備考

アプリケーションがOracleCommandオブジェクトのAddRowidプロパティをtrueに設定すると、アプリケーションはRowIdにアクセスできますが、これは表示可能なフィールドではありません。SELECT文リストにRowIdが追加されている場合は、このフィールドは表示可能です。OracleDataReader.VisibleFieldCountおよびOracleDataReader.FieldCountは、必ず同じ値を持っています。

// C#
 
using System;
using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
 
class VisibleFieldCountSample
{
  static void Main(string[] args)
  {
    string constr = "User Id=scott; Password=tiger; Data Source=oracle;";
    DbProviderFactory factory =
            DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
 
    using (DbConnection conn = factory.CreateConnection())
    {
      conn.ConnectionString = constr;
      try
      {
        conn.Open();
        OracleCommand cmd = (OracleCommand)factory.CreateCommand();
        cmd.Connection = (OracleConnection)conn;
 
        //to gain access to ROWIDs of the table
        cmd.AddRowid = true;
        cmd.CommandText = "select empno, ename from emp;";
 
        OracleDataReader reader = cmd.ExecuteReader();
        
        int visFC = reader.VisibleFieldCount; //Results in 2
        int hidFC = reader.HiddenFieldCount;  // Results in 1
 
        Console.Write("Visible field count: " + visFC);
        Console.Write("Hidden field count: " + hidFC);
 
        reader.Dispose();
        cmd.Dispose();
      }
      catch (Exception ex)
      {
        Console.WriteLine(ex.Message);
        Console.WriteLine(ex.StackTrace);
      }
    }
  }
}
 
 

OracleDataReaderパブリック・メソッド

OracleDataReaderパブリック・メソッドを、表5-48にリストします。

表5-48 OracleDataReaderパブリック・メソッド

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

Close

OracleDataReaderをクローズします

CreateObjRef

System.MarshalByRefObjectからの継承

Dispose

オブジェクトにより割り当てられたリソースまたはメモリーを解除します

Equals

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

GetBoolean

サポート対象外

GetByte

指定された列のバイト値を戻します

GetBytes

列の指定されたオフセット(バイト表示)から、最高の場合最大バイト数を使用して、指定されたバイト配列を移入します

GetChar

サポート対象外

GetChars

列の指定されたオフセット(文字)から、最高の場合最大文字数を使用して、指定された文字配列を移入します

GetData

サポート対象外

GetDataTypeName

指定された列のODP.NETタイプ名を戻します

GetDateTime

指定された列のDateTime値を戻します

GetDecimal

指定されたNUMBER列のdecimal値を戻します

GetDouble

指定されたNUMBER列またはBINARY_DOUBLE列のdouble値を戻します

GetEnumerator


コレクションから反復するのに使用できるIEnumeratorが戻されます。

GetFieldType

指定された列のTypeを戻します

GetFloat

指定されたNUMBER列またはBINARY_FLOAT列のfloat値を戻します

GetGuid

サポート対象外

GetHashCode

System.Objectからの継承

GetInt16

指定されたNUMBER列のInt16値を戻します

GetInt32

指定されたNUMBER列のInt32値を戻します

GetInt64

指定されたNUMBER列のInt64値を戻します

GetLifetimeService

System.MarshalByRefObjectによる継承

GetName

指定された列名を戻します

GetOracleBFile

指定されたBFILE列のOracleBFileオブジェクトを戻します

GetOracleBinary

指定された列のOracleBinary構造を戻します

GetOracleBlob

指定されたBLOB列のOracleBlobオブジェクトを戻します

GetOracleBlobForUpdate

指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します

GetOracleClob

指定されたCLOB列のOracleClobオブジェクトを戻します

GetOracleClobForUpdate

指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します

GetOracleDate

指定されたDATE列のOracleDate構造を戻します

GetOracleDecimal

指定されたNUMBER列のOracleDecimal構造を戻します

GetOracleIntervalDS

指定されたINTERVAL DAY TO SECOND列のOracleIntervalDS構造を戻します

GetOracleIntervalYM

指定されたINTERVAL YEAR TO MONTH列のOracleIntervalYM構造を戻します

GetOracleRef


指定されたREF列のOracleRefオブジェクトを戻します

GetOracleString

指定された列のOracleString構造を戻します

GetOracleTimeStamp

Oracle TimeStamp列のOracleTimeStamp構造を戻します

GetOracleTimeStampLTZ

指定されたOracle TimeStamp WITH LOCAL TIME ZONE列のOracleTimeStampLTZ構造を戻します

GetOracleTimeStampTZ

指定されたOracle TimeStamp WITH TIME ZONE列のOracleTimeStampTZ構造を戻します

GetOracleXmlType

指定されたXMLType列のOracleXmlTypeオブジェクトを戻します

GetOracleValue

指定された列値をODP.NETタイプとして戻します

GetOracleValues

すべての列値をODP.NETタイプとして取得します

GetOrdinal

指定された列名の0ベースの序数(または索引)を戻します

GetProviderSpecificFieldType


指定された列のプロバイダ固有のタイプを戻します

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

GetProviderSpecificValue


指定した序数の基礎となるプロバイダ固有の値を表すオブジェクトを戻します。

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

GetProviderSpecificValues


基礎となるプロバイダ固有の値を表すオブジェクトの配列を戻します。

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

GetSchemaTable

OracleDataReaderの列メタデータを記述するDataTableを戻します

GetString

指定された列の文字列値を戻します

GetTimeSpan

指定されたINTERVAL DAY TO SECOND列のTimeSpan値を戻します

GetType

System.Objectクラスからの継承

GetValue

列値を.NETタイプとして戻します

GetValues

すべての列値を.NETタイプとして取得します

GetXmlReader

XMLType列の値を.NET XmlTextReaderのインスタンスとして戻します

IsDBNull

列値がNULLかどうかを示します

NextResult

結果の読取り中にデータ・リーダーを次の結果セットに拡張します

Read

結果セットで次の行を読み取ります

ToString

System.Objectからの継承


Close

このメソッドはOracleDataReaderをクローズします。

宣言

// ADO.NET 2.0: C#
public override void Close();

実装

IDataReader

備考

Closeメソッドは、OracleDataReaderに関連付けられているすべてのリソースを解除します。

OracleDataReaderクラスのコード例には、Closeメソッドが含まれています。OracleDataReader概要の「例」を参照してください。

Dispose

このメソッドでは、オブジェクトにより割り当てられたリソースまたはメモリーを解除します。

宣言

// C#
public void Dispose();

実装

IDisposable

備考

Disposeメソッドでは、OracleDataReaderもクローズします。

GetBoolean

このメソッドは、サポートされていません。

宣言

// ADO.NET 2.0: C#
public override bool GetBoolean(int index);

パラメータ

  • index

    ゼロベースの列索引です。

実装

IDataRecord

例外

NotSupportedException - このプロパティは、サポートされていません。

GetByte

このメソッドは、指定された列のバイト値を戻します。

宣言

// ADO.NET 2.0: C#
public override byte GetByte(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

バイト表示の列の値

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetBytes

このメソッドは、列の指定されたオフセット(バイト表示)から、最高の場合最大バイト数を使用して、指定されたバイト配列を作成します。

宣言

// ADO.NET 2.0: C#
public override long GetBytes(int index, long fieldOffset, byte[] buffer, 
   int bufferOffset, int length);

パラメータ

  • index

    ゼロベースの列索引です。

  • fieldOffset

    読取り開始対象の列内のオフセット(バイト)

  • buffer

    データの読取り先のバイト配列

  • bufferOffset

    データ読取り開始対象の、バッファ内のオフセット(バイト)

  • length

    読取りを行う最大バイト数(バイト)

戻り値

読取りが終了したバイト数

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドは、バッファに読み取られたバイト数を戻します。メソッドが同じ列に対して前に呼び出されている場合は、バイト数は実際のフィールド長より短くなる場合があります。

NULL参照がバッファに渡された場合、バイト表示のフィールド長が戻されます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetChar

このメソッドは、サポートされていません。

宣言

// ADO.NET 2.0: C#
public override long GetChar(int index);

パラメータ

  • index

    ゼロベースの列索引

実装

IDataRecord

例外

NotSupportedException - このプロパティは、サポートされていません。

GetChars

このメソッドは、列の指定されたオフセット(文字表示)から、最高の場合最大文字数を使用して、指定された文字配列を作成します。

宣言

// ADO.NET 2.0: C#
public override long GetChars(int index, long fieldOffset, char[] buffer,
    int bufferOffset, int length);

パラメータ

  • index

    ゼロベースの列索引

  • fieldOffset

    読取り開始対象の列内の索引(文字)

  • buffer

    データの読取り先の文字配列

  • bufferOffset

    データ読取り開始対象の、バッファ内の索引(文字)

  • length

    読取りを行う最大文字数(文字)

戻り値

読取りが終了した文字数

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドは、バッファに読み取られた文字数を戻します。メソッドが同じ列に対して前に呼び出されている場合は、文字数は実際のフィールド長より短くなる場合があります。

NULL参照がバッファに渡された場合、文字表示のフィールド長が戻されます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetDataTypeName

このメソッドは、指定された列のODP.NETタイプ名を戻します。

宣言

// ADO.NET 2.0: C#
public override string GetDataTypeName(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のODP.NETタイプの名前

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされています。

IndexOutOfRangeException - 列索引が無効です。

GetDateTime

このメソッドは、指定された列のDateTime値を戻します。

宣言

// ADO.NET 2.0: C#
public override DateTime GetDateTime(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のDateTime

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetDecimal

このメソッドは、指定されたNUMBER列のdecimal値を戻します。

宣言

// ADO.NET 2.0: C#
public override decimal GetDecimal(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のdecimal

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetDouble

このメソッドは、指定されたNUMBER列またはBINARY_DOUBLE列のdouble値を戻します。

宣言

// ADO.NET 2.0: C#
public override double GetDouble(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のdouble

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

Oracle Database 10gより、GetDoubleBINARY_DOUBLE列からのデータ検索をサポートしています。

GetEnumerator

このメソッドでは、コレクション(レコード・セット)から反復できるIEnumeratorが戻されます。

宣言

// ADO.NET 2.0: C#
public override IEnumerator GetEnumerator();

戻り値

コレクション(レコード・セット)から反復できるIEnumerator

例外

InvalidOperationException - リーダーがクローズされています。

GetFieldType

このメソッドは、指定された列のTypeを戻します。

宣言

// ADO.NET 2.0: C#
public override Type GetFieldType(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のデフォルト.NETタイプのtype

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされているか、指定された列はUDTですがUDTに対する登録済カスタム・タイプ・マッピングが存在しません。

IndexOutOfRangeException - 列索引が無効です。

備考

GetFieldTypeは、OracleDataReader上のGetValueアクセッサまたはItemプロパティの起動後に、アプリケーションが取得する値に対応するタイプを戻します。たとえば、列が文字列である場合、このメソッドは.NET文字列に対する.NETタイプ・オブジェクトを戻します。

属性がUDTである場合、このメソッドは次のいずれかを戻します。

  • カスタム・タイプ・マッピングがOracleオブジェクトまたはコレクションに対して存在する場合は、カスタム・タイプの.NETタイプ。

  • 列がOracle REFである場合は、文字列の.NETタイプ。

GetFloat

このメソッドは、指定されたNUMBER列またはBINARY_FLOAT列のfloat値を戻します。

宣言

// ADO.NET 2.0: C#
public override float GetFloat(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のfloat

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

Oracle Database 10gより、GetFloatBINARY_FLOAT列からのデータ検索をサポートしています。

GetGuid

このメソッドは、サポートされていません。

宣言

// ADO.NET 2.0: C#
public override Guid GetGuid(int index);

パラメータ

  • index

    ゼロベースの列索引です。

実装

IDataRecord

例外

NotSupportedException - このプロパティは、サポートされていません。

GetInt16

このメソッドは、指定されたNUMBER列のInt16値を戻します。


注意:

shortInt16と等価です。

宣言

// ADO.NET 2.0: C#
public override short GetInt16(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のInt16

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetInt32

このメソッドは、指定されたNUMBER列のInt32値を戻します。


注意:

intInt32と等価です。

宣言

// ADO.NET 2.0: C#
public override int GetInt32(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のInt32

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetInt64

このメソッドは、指定されたNUMBER列のInt64値を戻します。


注意:

longInt64と等価です。

宣言

// ADO.NET 2.0: C#
public override long GetInt64(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のInt64

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetName

このメソッドは、指定された列の列名を戻します。

宣言

// ADO.NET 2.0: C#
public override string GetName(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列の名前です。

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされています。

IndexOutOfRangeException - 列索引が無効です。

GetOracleBFile

このメソッドは、指定されたBFILE列のOracleBFileオブジェクトを戻します。

宣言

// C#
public OracleBFile GetOracleBFile(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleBFile

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleBinary

このメソッドは、指定された列のOracleBinary構造を戻します。

宣言

// C#
public OracleBinary GetOracleBinary(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleBinary

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleBinaryは、次のOracleタイプで使用されています。

  • BFILE

  • BLOB

  • LONG RAW

  • RAW

GetOracleBlob

このメソッドは、指定されたBLOB列のOracleBlobオブジェクトを戻します。

宣言

// C#
public OracleBlob GetOracleBlob(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleBlob値です。

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleBlobForUpdate

GetOracleBlobForUpdateは、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

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

  • GetOracleBlobForUpdate(int)

    このメソッドは、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

  • GetOracleBlobForUpdate(int, int)

    このメソッドはWAIT句を使用して、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

GetOracleBlobForUpdate(int)

このメソッドは、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

宣言

// C#
public OracleBlob GetOracleBlobForUpdate(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

更新可能なOracleBlobオブジェクト

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

OracleCommandExecuteReader()メソッドを起動する場合、OracleDataReaderによってフェッチされる全データは、特定のスナップショットから導出されます。このため、アクセッサ・メソッドを同じ列で呼び出すと、常に同じ値が戻されます。GetOracleBlobForUpdate()メソッドではデータベース・ラウンドトリップを発生させ、現行のBLOBデータに対する参照を取得する一方、FOR UPDATE句を使用して行のロックも行います。つまり、元のスナップショットからは値を取得できないため、GetOracleBlob()から取得したOracleBlobには、GetOracleBlobForUpdate()から取得したOracleBlobとは異なる値を含めることができます。

このメソッドをコール後にBLOB列はロックされるため、戻されたOracleBlobオブジェクトを使用して、BLOBを安全に更新できます。

このメソッドを内部で起動すると、WAIT句を使用せずにSELECT..FOR UPDATE文が実行されます。このため、その行に対してロックが取得されるまで、文は無期限に待機できます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

次の例では、更新のためリーダーからOracleBlobオブジェクトを取得し、OracleBlobオブジェクトを更新して、トランザクションをコミットしています。

/* Database Setup, if you have not done so yet.
connect scott/tiger@oracle 
CREATE TABLE empInfo (
empno NUMBER(4) PRIMARY KEY,
empName VARCHAR2(20) NOT NULL,
hiredate DATE,
salary NUMBER(7,2),
jobDescription Clob,
byteCodes BLOB
);
 
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(1,'KING','SOFTWARE ENGR', '5657');
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(2,'SCOTT','MANAGER', '5960');
commit;
 
*/
// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types;
 
class GetOracleBlobForUpdateSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Get the ByteCodes for empno = 1
    string cmdstr = "SELECT BYTECODES, EMPNO FROM EMPINFO where EMPNO = 1";
    OracleCommand cmd = new OracleCommand(cmdstr, con);
 
    // Since we are going to update the OracleBlob object, we will
    //have to create a transaction
    OracleTransaction txn = con.BeginTransaction();
 
    // Get the reader
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Declare the variables to retrieve the data in EmpInfo
    OracleBlob byteCodesBlob;
 
    // Read the first row
    reader.Read();
    if (!reader.IsDBNull(0))
    {
      byteCodesBlob = reader.GetOracleBlobForUpdate(0);
 
      // Close the reader
      reader.Close();
 
      // Update the ByteCodes object
      byte[] addedBytes = new byte[2] {0, 0};
      byteCodesBlob.Append(addedBytes, 0, addedBytes.Length);
 
      // Now commit the transaction
      txn.Commit();
      Console.WriteLine("Blob Column successfully updated");
    }
    else
      reader.Dispose();
 
    // Close the connection
    con.Dispose();
  }
}

GetOracleBlobForUpdate(int, int)

このメソッドはWAIT句を使用して、指定されたBLOB列の更新可能なOracleBlobオブジェクトを戻します。

宣言

// C#
public OracleBlob GetOracleBlobForUpdate(int index, int wait);

パラメータ

  • index

    ゼロベースの列索引です。

  • wait

    メソッドがロックを取得するまで待機する秒数

戻り値

更新可能なOracleBlobオブジェクト

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

OracleCommandExecuteReader()メソッドを起動する場合、OracleDataReaderによってフェッチされる全データは、特定のスナップショットから導出されます。このため、アクセッサ・メソッドを同じ列で呼び出すと、常に同じ値が戻されます。GetOracleBlobForUpdate()メソッドではデータベース・ラウンドトリップを発生させ、現行のBLOBデータに対する参照を取得する一方、FOR UPDATE句を使用して行のロックも行います。つまり、元のスナップショットからは値を取得できないため、GetOracleBlob()から取得したOracleBlobには、GetOracleBlobForUpdate()から取得したOracleBlobとは異なる値を含めることができます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

このメソッドをコール後にBLOB列はロックされるため、戻されたOracleBlobオブジェクトを使用して、BLOBを安全に更新できます。

このメソッドを内部で起動すると、行をロックするSELECT..FOR UPDATE文が実行されます。

文には、wait値に応じて、別のWAIT句を追加できます。次のwait値の場合は、次のとおりにします。

  • 0

    SELECT..FOR UPDATE文の文末に"NOWAIT" が追加されている場合。ロックを取得済かどうかに関係なく、文はただちに実行されます。ロックが取得されていない場合は、例外がスローされます。

  • n

    SELECT..FOR UPDATE文の文末に"WAIT n" が追加されている場合。文はロックを取得後ただちに実行されます。ロックがn秒で取得できない場合は、このメソッド・コールに例外がスローされます。

    WAIT n」機能は、Oracle9i以降でのみ使用可能です。Oracle9iより前のバージョンの場合は、nが暗黙的に-1として処理され、SELECT..FOR UPDATE文の文末には何も追加されません。

  • -1

    SELECT..FOR UPDATEの文末に何も追加されていない場合。文はロックが取得されるまで無期限に待機して実行されます。

GetOracleBlobForUpdateメソッドは比較可能です。使用方法を示したコード例は、「例」を参照してください。

GetOracleClob

このメソッドは、指定されたCLOB列のOracleClobオブジェクトを戻します。

宣言

// C#
public OracleClob GetOracleClob(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleClob

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleClobForUpdate

GetOracleClobForUpdateは、指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します。

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

  • GetOracleClobForUpdate(int)

    このメソッドは、指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します。

  • GetOracleClobForUpdate(int, int)

    このメソッドはWAIT句を使用して、指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します。

GetOracleClobForUpdate(int)

このメソッドは、指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します。

宣言

// C#
public OracleClob GetOracleClobForUpdate(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

更新可能なOracleClob

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

OracleCommandExecuteReader()メソッドを起動する場合、OracleDataReaderによってフェッチされる全データは、特定のスナップショットから導出されます。このため、アクセッサ・メソッドを同じ列で呼び出すと、常に同じ値が戻されます。GetOracleClobForUpdate()メソッドではデータベース・ラウンドトリップを発生させ、現行のCLOBデータに対する参照を取得する一方、FOR UPDATE句を使用して行のロックも行います。つまり、元のスナップショットからは値を取得できないため、GetOracleClob()から取得したOracleClobには、GetOracleClobForUpdate()から取得したOracleClobとは異なる値を含めることができます。

このメソッドをコール後にCLOB列はロックされるため、戻されたOracleClobオブジェクトを使用して、CLOBを安全に更新できます。

このメソッドを内部で起動すると、WAIT句を使用せずにSELECT..FOR UPDATE文が実行されます。このため、その行に対してロックが取得されるまで、文は無期限に待機できます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

次の例では、更新のためリーダーからOracleClobオブジェクトを取得し、OracleClobオブジェクトを更新して、トランザクションをコミットしています。

/* Database Setup, if you have not done so yet.
connect scott/tiger@oracle 
CREATE TABLE empInfo (
empno NUMBER(4) PRIMARY KEY,
empName VARCHAR2(20) NOT NULL,
hiredate DATE,
salary NUMBER(7,2),
jobDescription Clob,
byteCodes BLOB
);
 
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(1,'KING','SOFTWARE ENGR', '5657');
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(2,'SCOTT','MANAGER', '5960');
commit;
 
*/
// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types;
 
class GetOracleClobForUpdateSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    // Get the job description for empno = 1
    string cmdStr = "SELECT JOBDESCRIPTION, EMPNO FROM EMPINFO where EMPNO = 1";
    OracleCommand cmd = new OracleCommand(cmdStr, con);
 
    // Since we are going to update the OracleClob object, we will
    //  have to create a transaction
    OracleTransaction txn = con.BeginTransaction();
 
    // Get the reader
    OracleDataReader reader = cmd.ExecuteReader();
 
    // Declare the variables to retrieve the data in EmpInfo
    OracleClob jobDescClob;
 
    // Read the first row
    reader.Read();
 
    if (!reader.IsDBNull(0))
    {
      jobDescClob = reader.GetOracleClobForUpdate(0);
 
      // Close the reader
      reader.Close();
 
      // Update the job description Clob object
      char[] jobDesc = "-SALES".ToCharArray();
      jobDescClob.Append(jobDesc, 0, jobDesc.Length);
 
      // Now commit the transaction
      txn.Commit();
      Console.WriteLine("Clob Column successfully updated");
    }
    else
      reader.Close();
 
    // Close the connection
    con.Close();
  }
}

GetOracleClobForUpdate(int, int)

このメソッドはWAIT句を使用して、指定されたCLOB列の更新可能なOracleClobオブジェクトを戻します。

宣言

// C#
public OracleClob GetOracleClobForUpdate(int index, int wait);

パラメータ

  • index

    ゼロベースの列索引です。

  • wait

    メソッドがロックを取得するまで待機する秒数

戻り値

更新可能なOracleClob

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

OracleCommandExecuteReader()メソッドを起動する場合、OracleDataReaderによってフェッチされる全データは、特定のスナップショットから導出されます。このため、アクセッサ・メソッドを同じ列で呼び出すと、常に同じ値が戻されます。GetOracleClobForUpdate()メソッドではデータベース・ラウンドトリップを発生させ、現行のCLOBデータに対する参照を取得する一方、FOR UPDATE句を使用して行のロックも行います。つまり、元のスナップショットからは値を取得できないため、GetOracleClob()から取得したOracleClobには、GetOracleClobForUpdate()から取得したOracleClobとは異なる値を含めることができます。

このメソッドを内部で起動すると、行をロックするSELECT..FOR UPDATE文が実行されます。

このメソッドをコール後にCLOB列はロックされるため、戻されたOracleClobオブジェクトを使用して、CLOBを安全に更新できます。

文には、wait値に応じて、別のWAIT句を追加できます。次のwait値の場合は、次のとおりにします。

  • 0

    SELECT..FOR UPDATE文の文末に"NOWAIT" が追加されている場合。ロックを取得済かどうかに関係なく、文はただちに実行されます。ロックが取得されていない場合は、例外がスローされます。

  • n

    SELECT..FOR UPDATE文の文末に"WAIT n" が追加されている場合。文はロックを取得後ただちに実行されます。ロックがn秒で取得できない場合は、このメソッド・コールに例外がスローされます。

    WAIT n」機能は、Oracle9i以降でのみ使用可能です。Oracle9iより前のバージョンの場合は、nが暗黙的に-1として処理され、SELECT..FOR UPDATE文の文末には何も追加されません。

  • -1

    SELECT..FOR UPDATEの文末に何も追加されていない場合。文はロックが取得されるまで無期限に待機して実行されます。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleClobForUpdateメソッドは比較可能です。使用方法を示したコード例は、「例」を参照してください。

GetOracleDate

このメソッドは、指定されたDATE列のOracleDate構造を戻します。

宣言

// C#
public OracleDate GetOracleDate(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleDate

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleDecimal

このメソッドは、指定されたNUMBER列のOracleDecimal構造を戻します。

宣言

// C#
public OracleDecimal GetOracleDecimal(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleDecimal

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleIntervalDS

このメソッドは、指定されたINTERVAL DAY TO SECOND列のOracleIntervalDS構造を戻します。

宣言

// C#
public OracleIntervalDS GetOracleIntervalDS(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleIntervalDS

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleIntervalYM

このメソッドは、指定されたINTERVAL YEAR TO MONTH列のOracleIntervalYM構造を戻します。

宣言

// C#
public OracleIntervalYM GetOracleIntervalYM(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleIntervalYM

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleRef

このメソッドは、指定されたREF列のOracleRefオブジェクトを戻します。

宣言

// C#
public OracleRef GetOracleRef(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

指定された列のOracleRefオブジェクト。

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Readメソッドが呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - アクセッサ・メソッドはこの列型に対して無効です。

GetOracleString

このメソッドは、指定された列のOracleString構造を戻します。

宣言

// C#
public OracleString GetOracleString(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleString

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

列がOracle REF列である場合、データベースでREFを表す16進数が戻されます。

GetOracleTimeStamp

このメソッドは、Oracle TimeStamp列のOracleTimeStamp構造を戻します。

宣言

// C#
public OracleTimeStamp GetOracleTimeStamp(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleTimeStamp

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

GetOracleTimeStampをOracle Type TimeStampとともに使用しています。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleTimeStampLTZ

このメソッドは、指定されたOracle TimeStamp WITH LOCAL TIME ZONE列のOracleTimeStampLTZ構造を戻します。

宣言

// C#
public OracleTimeStampLTZ GetOracleTimeStampLTZ(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleTimeStampLTZ

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

GetOracleTimeStampLTZは、Oracle Type TimeStampを使用してLocal Time Zone列とともに使用されています。

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleTimeStampTZ

このメソッドは、指定されたOracle TimeStamp WITH TIME ZONE列のOracleTimeStampTZ構造を戻します。

宣言

// C#
public OracleTimeStampTZ GetOracleTimeStampTZ(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleTimeStampTZ

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

Oracle Type TimeStampをLocal Time Zone列とともに使用

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetOracleXmlType

このメソッドは、指定されたXMLType列のOracleXmlTypeオブジェクトを戻します。

宣言

// C#
public OracleXmlType GetOracleXmlType(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のOracleXmlType

例外

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

要件

このプロパティは、Oracle9iリリース2(9.2)以上でのみ使用できます。

GetOracleValue

このメソッドは、指定された列値をODP.NETタイプとして戻します。

宣言

// C#
public object GetOracleValue(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

ODP.NETタイプとしての列の値です。

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

備考

列がOracleオブジェクトまたはOracleコレクションの列で、カスタム・タイプ・マッピングが存在する場合、カスタム・タイプが戻されます。

列がOracle REF列である場合、OracleRefが戻されます。

GetOracleValues

このメソッドでは、すべての列値をODP.NETタイプとして取得します。

宣言

// C#
public int GetOracleValues(object[] values);

パラメータ

  • values

    ODP.NETタイプを列値として保持するオブジェクトの配列

戻り値

values配列内のODP.NETタイプの数

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

備考

このメソッドでは、個別に各列の値を取り出すのではなく、すべての列値を取り出す方法を提供します。

取り出される列値の数は、values配列の長さが最小の、結果セット内の列数です。

GetOrdinal

このメソッドは、指定された列名の0ベースの序数(または索引)を戻します

宣言

// ADO.NET 2.0: C#
public override int GetOrdinal(string name);

パラメータ

  • name

    指定された列名

戻り値

列の索引

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされています。

IndexOutOfRangeException - 列索引が無効です。

備考

指定された列を列名で特定するには、大/小文字を区別して検索します。これで特定できない場合は、大/小文字を区別せずに検索します。

GetProviderSpecificFieldType

このメソッドは、指定された列のプロバイダ固有のタイプを戻します。

宣言

// ADO.NET 2.0: C#public override Type GetProviderSpecificFieldType(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

指定した列のプロバイダ固有のタイプ。これはOracle.DataAccess.Typesネームスペースのメンバーです。

例外

IndexOutOfRangeException - 列索引が無効です。

InvalidOperationException - リーダーがクローズされているか、指定された列はUDTですがUDTに対する登録済カスタム・タイプ・マッピングが存在しません。

備考

GetProviderSpecficFieldTypeは、OracleDataReader上のGetProviderSpecificValueアクセッサの呼出し後に、アプリケーションが取得する値に対応するタイプを戻します。たとえば、列が文字列である場合、このメソッドはOracleStringに対する.NETタイプ・オブジェクトを戻します。

属性がUDTである場合、このメソッドは次のいずれかを戻します。

  • 列がOracleオブジェクトまたはOracleコレクションの列で、カスタム・タイプ・マッピングが存在する場合は、カスタム・タイプの.NETタイプ。

  • 列がOracle REFである場合は、OracleRefの.NETタイプ。

GetProviderSpecificValue

このメソッドは、指定した序数の基礎となるプロバイダ固有の値を表すObjectを戻します。

宣言

// ADO.NET 2.0: C#
public override object GetProviderSpecificValue (int index); 

パラメータ

index

ゼロベースの列索引です。

戻り値

基礎となるプロバイダ固有フィールド・タイプの代理であるObject

例外

IndexOutOfRangeException - 列索引が無効です。

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

備考

列がOracleオブジェクトまたはコレクションの列で、カスタム・タイプ・マッピングが存在する場合、カスタム・タイプが戻されます。

列がOracle REF列である場合、OracleRefが戻されます。

GetProviderSpecificValues

このメソッドは、基礎となるプロバイダ固有値を表すオブジェクトの配列を戻します。

宣言

// ADO.NET 2.0: C#
public override int GetProviderSpecificValues(object [ ] values);

パラメータ

  • values

    オブジェクトの配列

戻り値

配列内のObjectインスタンスの数。

例外

InvalidOperationException - リーダーがクローズされています。

GetSchemaTable

このメソッドは、OracleDataReaderの列メタデータを記述するDataTableを戻します。

宣言

// ADO.NET 2.0: C#
public override DataTable GetSchemaTable();

戻り値

結果セットのメタデータを含むDataTable

実装

IDataReader

例外

InvalidOperationException - 接続がクローズされているか、またはリーダーがクローズされています。

備考

OracleDataReader.GetSchemaTableメソッドは、SchemaTableを戻します。

OracleDataReader SchemaTable

OracleDataReader SchemaTableは、OracleDataReaderの列メタデータを記述するDataTableです。

SchemaTableの列は、次に表示する順序になります。

表5-49 OracleDataReader SchemaTable

名前 ネーム・タイプ 説明

ColumnName

System.String

列の名前です。

ColumnOrdinal

System.Int32

0ベースの列の序数。

ColumnSize

System.Int64

列内の値として可能な最大長。ColumnSize値は次のようにして決定されます:

  • CHARタイプおよびVARCHAR2タイプ

    バイト表示 - IsByteSemanticブール値がtrueの場合

    文字表示 - IsByteSemanticブール値がfalseの場合

  • その他すべてのタイプ

    バイト表示

詳細は、IsByteSemanticを参照してください。

NumericPrecision

System.Int16

列が数値のデータ型の場合の、列の最大精度。

この列には、Oracle NUMBER、Oracle INTERVAL YEAR TO MONTHおよびOracle INTERVAL DAY TO SECOND 列に対する有効な値が含まれています。その他すべての列については、値はnullです。

NumericScale

System.Int16

列のスケール。

この列には、Oracle NUMBER、Oracle INTERVAL DAY TO SECONDおよびOracle TIMESTAMP列に対する有効な値が含まれています。その他すべての列については、値はnullです。

IsUnique

System.Boolean

列値が一意かどうかを示します。

実表の2行にこの列の同じ値が含まれていない場合は、true。ここでは、実表はBaseTableNameで戻された表です。

次のうちの1つが適用される場合、IsUniquetrueであることが保証されます。

  • 列が単独でキーを構成している

  • この列のみに適用される一意制約または一意索引、および列に対して定義されたNOT NULL制約がある

  • 列が明示的に選択されたROWIDである

列に実表の重複した値を含めることができる場合、IsUniqueはfalse。

デフォルトはfalseです。

選択リストの実表の列の各出現に対して、このプロパティの値は同じです。

IsKey

System.Boolean

列がキー列かどうかを示します。

列が、行を一意に識別する行セット内の列のセットの1つである場合は、truetrueに設定されたIsKeyを持つ列のセットは行セットの行を一意に識別する必要があります。この列のセットが最小の列セットである必要はありません。

この列セットは、優先度の低い順に次の1つから生成できます。

  • 実表の主キー

  • 次の条件付きの、任意の一意制約または一意索引。複合一意制約または複合一意索引の場合、NOT NULL制約は列または列のすべてに対して定義する必要があります。

  • 次の条件付きの、任意の複合一意制約または複合一意索引。NULL制約は列の少なくとも1つ(すべてではない)に対して定義する必要があります。

明示的に選択されたROWID。列が行を一意に識別する必要がない場合は、falseです。選択リストの実表の列の各出現に対して、このプロパティの値は同じです。

IsRowID

System.Boolean

列がROWIDの場合はtrue、それ以外の場合はfalse

BaseColumnName

System.String

列に別名が使用されている場合の、データベース内の列名。

BaseSchemaName

System.String

列を含むデータベース内のスキーマ名。

BaseTableName

System.String

列を含むデータベース内の表名またはビュー名。

DataType

System.RuntimeType

共通言語のランタイム型にマップします。

ProviderType

Oracle.DataAccess. Client.OracleDbType

列のデータベース列タイプ(OracleDbType)。

AllowDBNull

System.Boolean

null値が許可されている場合はtrue、それ以外の場合はfalse

IsAliased

System.Boolean

列が別名の場合はtrue、それ以外の場合はfalse

IsByteSemantic

System.Boolean

IsByteSemanticの場合は次のとおりです。

  • ColumnSize値にバイト・セマンティクスが使用されている場合はtrue

  • ColumnSizeにキャラクタ・セマンティクスが使用されている場合はfalse

Oracle9iより前のバージョンのデータベースに接続する場合は、この値は常にtrueです。

IsExpression

System.Boolean

列が式の場合はtrue、それ以外の場合はfalse

IsHidden

System.Boolean

列が非表示の場合はtrue、それ以外の場合はfalse

IsReadOnly

System.Boolean

列が読取り専用の場合はtrue、それ以外の場合はfalse

IsLong

System.Boolean

列がLONGLONG RAWBLOBCLOBまたはBFILEの場合はtrue、それ以外の場合はfalse

UdtTypeName

System.String

UDTのタイプ名。


この例では、リーダーからSchemaTableを作成して使用します。

/* Database Setup, if you have not done so yet.
connect scott/tiger@oracle 
CREATE TABLE empInfo (
empno NUMBER(4) PRIMARY KEY,
empName VARCHAR2(20) NOT NULL,
hiredate DATE,
salary NUMBER(7,2),
jobDescription Clob,
byteCodes BLOB
);
 
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(1,'KING','SOFTWARE ENGR', '5657');
Insert into empInfo(EMPNO,EMPNAME,JOBDESCRIPTION,byteCodes) values 
(2,'SCOTT','MANAGER', '5960');
commit;
 
*/
// C#
 
using System;
using System.Data;
using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types;
 
class GetSchemaTableSample
{
  static void Main()
  {
    string constr = "User Id=scott;Password=tiger;Data Source=oracle";
    OracleConnection con = new OracleConnection(constr);
    con.Open();
 
    string cmdstr = "SELECT EMPNO,EMPNAME FROM EMPINFO where EMPNO = 1";
    OracleCommand cmd = new OracleCommand(cmdstr, con);
 
    //get the reader
    OracleDataReader reader = cmd.ExecuteReader();
 
    //get the schema table
    DataTable schemaTable = reader.GetSchemaTable();
 
    //retrieve the first column info.
    DataRow row = schemaTable.Rows[0];
 
    //print out the column info
    Console.WriteLine("Column name: " + row["COLUMNNAME"]);
    Console.WriteLine("Precision: " + row["NUMERICPRECISION"]);
    Console.WriteLine("Scale: " + row["NUMERICSCALE"]);
    reader.Close();
 
    // Close the connection
    con.Close();
  }
}

GetString

このメソッドは、指定された列のstring値を戻します。

宣言

// ADO.NET 2.0: C#
public override string GetString(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のstring

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullメソッドを呼び出して、NULL値を確認してください。

列がOracle REF列である場合、データベースでREFを表す16進数が戻されます。

GetTimeSpan

このメソッドは、指定されたINTERVAL DAY TO SECOND列のTimeSpan値を戻します。

宣言

// C#
public TimeSpan GetTimeSpan(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列のTimeSpan

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

GetValue

このメソッドでは、列値を.NETタイプとして戻します。

宣言

// ADO.NET 2.0: C#
public override object GetValue(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

.NETタイプとしての列の値

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られているか、またはOracleオブジェクトまたはOracleコレクション列に対して有効なカスタム・タイプ・マッピングが指定されていません。

IndexOutOfRangeException - 列索引が無効です。

備考

列がOracleオブジェクトまたはOracleコレクションの列である場合、カスタム・タイプ・マッピングに対応する.NETカスタム・タイプが戻されます。

列がOracle REF列である場合、データベースでREFを表す.NET文字列として16進数が戻されます。

UDTがNULLである場合、DBNull.Valueが戻されます

GetValues

このメソッドでは、すべての列値を.NETタイプとして取得します。

宣言

// ADO.NET 2.0: C#
public override int GetValues(object[ ] values);

パラメータ

  • values

    .NETタイプを列値として保持するオブジェクトの配列

戻り値

values配列のオブジェクト数

実装

IDataRecord

例外

InvalidOperationException - 接続またはリーダーがクローズされているか、Read()が呼び出されていないか、すべての行が読み取られています。

備考

このメソッドでは、個別に各列の値を取り出すのではなく、すべての列値を取り出す方法を提供します。

取り出される列値の数は、配列値の長さが最小の、結果セット内の列数です。

GetXmlReader

このメソッドでは、XMLType列のコンテンツを.NET XmlTextReaderオブジェクトのインスタンスとして戻します。

宣言

// C#
public XmlReader GetXmlReader(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

.NET XmlTextReader

例外

InvalidCastException - この列型のアクセッサ・メソッドが無効か、列値がNULLです。

備考

このメソッドを呼び出す前にIsDBNullを呼び出して、NULL値を確認してください。

IsDBNull

このメソッドは、列値がNULLかどうかを示します。

宣言

// ADO.NET 2.0: C#
public override bool IsDBNull(int index);

パラメータ

  • index

    ゼロベースの列索引です。

戻り値

列がNULL値の場合はtrueを戻し、それ以外の場合はfalseを戻します。

実装

IDataRecord

例外

InvalidOperationException - リーダーがクローズされているか、Read()が呼び出されていないか、またはすべての行が読み取られています。

IndexOutOfRangeException - 列索引が無効です。

備考

別のアクセッサ・メソッドを呼び出す前に、このメソッドを呼び出してNULL値を確認してください。

OracleDataReaderクラスのコード例には、IsDBNullメソッドが含まれています。「例」を参照してください。

NextResult

このメソッドは、データ・リーダーを次の結果セットに拡張します。

宣言

// ADO.NET 2.0: C#
public override bool NextResult();

戻り値

別の結果セットが存在する場合はtrueを戻し、それ以外の場合はfalseを戻します。

実装

IDataReader

例外

InvalidOperationException - 接続がクローズされているか、またはリーダーがクローズされています。

備考

NextResultは、複数の結果セットを戻すストアド・プロシージャを実行した結果を読み取る場合に使用されます。

Read

このメソッドでは、結果セットで現在の次の行を読み取ります。

宣言

// ADO.NET 2.0: C#
public override  bool Read();

戻り値

別の行が存在する場合はtrueを戻し、それ以外の場合はfalseを戻します。

実装

IDataReader

例外

InvalidOperationException - 接続がクローズされているか、またはリーダーがクローズされています。

備考

データ・リーダーの初期位置は、最初の行の前です。このため、最初の行をフェッチするにはReadメソッドを呼び出す必要があります。読取りが完了したばかりの行が現在の行とみなされます。OracleDataReaderにそれ以上読み取る行がない場合は、falseが戻されます。

OracleDataReaderクラスのコード例には、Readメソッドが含まれています。「例」を参照してください。