_ Oracle.DataAccess.Clientネームスペース、6/30 ヘッダーをスキップ

Oracle® Data Provider for .NET開発者ガイド
リリース9.2.0.4

部品番号 B13807-01
Go To Table Of Contents
目次
Go To Index
索引

Go to previous page Go to beginning of chapter Go to next page

Oracle.DataAccess.Clientネームスペース、6/30


OracleDataReaderクラス

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

DataSetと異なり、OracleDataReaderは接続されたままで、一度に1行をフェッチします。

関連項目:

クラスの継承

Object

  MarshalByRefObject

    OracleDataReader

宣言
// C#
public sealed class OracleDataReader : MarshalByRefObject, IEnumerable,
  IDataReader, IDisposable, IDataRecord
スレッド・セーフティ

インスタンス・メソッドではスレッド・セーフティを保証しませんが、すべてのpublic staticメソッドはスレッド・セーフです。

備考

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

この項のOracleDataReaderの例は、次のように定義されたEMPINFO表を基にしています。


  CREATE TABLE empInfo (
    empno NUMBER(4) PRIMARY KEY,
    empName VARCHAR2(20) NOT NULL,
    hiredate DATE,
    salary NUMBER(7,2),
    jobDescription Clob,
    byteCodes BLOB
);

EMPINFO表には、次の値が含まれています。


EMPNO    EMPNAME    HIREDATE    SALARY     JOBDESCRIPTION  BYTECODES
                                                           (Hex Values)
=====    =======    ========    ======     ==============  ============

    1    KING       01-MAY-81   12345.67   SOFTWARE ENGR   {0x12, 0x34}
    2    SCOTT      01-SEP-75   34567.89   MANAGER         {0x56, 0x78}
    3    BLAKE      01-OCT-90   9999.12    TRANSPORT       {0x23, 0x45}
    4    SMITH      NULL        NULL       NULL             NULL

次の例では、EMPINFO表のデータを取得しています。

//C #
//This method retrieves all the data from EMPINFO table

public void ReadEmpInfo(string connStr)
{
   string cmdStr = "SELECT * FROM EMPINFO";
   OracleConnection connection = new OracleConnection(connStr);
   OracleCommand cmd = new OracleCommand(cmdStr, connection);
   connection.Open();

   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();
      //done reading one row
     } //Done Reading EMPINFO table

     //Close the reader
     reader.Close();

     // Close the connection
     connection.Close();
    }

要件

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

アセンブリ: Oracle.DataAccess.dll

関連項目:

OracleDataReaderのメンバー

OracleDataReaderのメンバーを次の表に示します。

OracleDataReaderのstaticメソッド

OracleDataReaderのstaticメソッドを表4-42に示します。

表4-42 OracleDataReaderのstaticメソッド 
メソッド 説明

Equals

Objectから継承されます(オーバーロード)。

OracleDataReaderのプロパティ

OracleDataReaderのプロパティを表4-43に示します。

表4-43 OracleDataReaderのプロパティ 
プロパティ 説明

Depth

現在の行に対するネストの深さを示す値を取得します。

FetchSize

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

FieldCount

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

IsClosed

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

Item

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

InitialLOBFetchSize

LOB列について、OracleDataReaderが最初にフェッチするサイズを指定します。

InitialLONGFetchSize

LONG列およびLONG RAW列について、OracleDataReaderが最初にフェッチするサイズを指定します。

RecordsAffected

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

OracleDataReaderのpublicメソッド

OracleDataReaderのpublicメソッドを表4-44に示します。

表4-44 OracleDataReaderのpublicメソッド 
publicメソッド 説明

Close

OracleDataReaderをクローズします。

CreateObjRef

MarshalByRefObjectから継承されます。

Dispose

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

Equals

Objectから継承されます(オーバーロード)。

GetBoolean

サポートされていません。

GetByte

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

GetBytes

列の指定されたオフセット(バイト)から最大バイト数以下のデータを指定されたバイト配列に移入します。

GetChar

サポートされていません。

GetChars

列の指定されたオフセット(文字)から最大文字数以下のデータを指定された文字配列に移入します。

GetData

サポートされていません。

GetDataTypeName

指定された列のODP.NET型名を返します。

GetDateTime

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

GetDecimal

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

GetDouble

指定されたNUMBER列のdouble値を返します。

GetFieldType

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

GetFloat

指定されたNUMBER列のfloat値を返します。

GetGuid

サポートされていません。

GetHashCode

Objectから継承されます。

GetInt16

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

GetInt32

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

GetInt64

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

GetLifetimeService

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構造体を返します。

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から始まる順序番号(インデックス)を返します。

GetSchemaTable

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

GetString

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

GetTimeSpan

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

GetType

Objectクラスから継承されます。

GetValue

列の値を.NET型として返します。

GetValues

すべての列の値を.NET型として取得します。

GetXmlReader

XMLType列の内容を.NETのXmlTextReaderオブジェクトのインスタンスとして返します。

IsDBNull

列の値がnullかどうかを示します。

NextResult

結果を読み込む際に、データ・リーダーを次の結果セットに進めます。

Read

結果セット内の次の行を読み込みます。

ToString

Objectから継承されます。

関連項目:

OracleDataReaderのstaticメソッド

OracleDataReaderのstaticメソッドを表4-45に示します。

表4-45 OracleDataReaderのstaticメソッド 
メソッド 説明

Equals

Objectから継承されます(オーバーロード)。

関連項目:

OracleDataReaderのプロパティ

OracleDataReaderのプロパティを表4-46に示します。

表4-46 OracleDataReaderのプロパティ 
プロパティ 説明

Depth

現在の行に対するネストの深さを示す値を取得します。

FetchSize

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

FieldCount

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

IsClosed

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

Item

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

InitialLOBFetchSize

LOB列について、OracleDataReaderが最初にフェッチするサイズを指定します。

InitialLONGFetchSize

LONG列およびLONG RAW列について、OracleDataReaderが最初にフェッチするサイズを指定します。

RecordsAffected

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

関連項目:

Depth

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

宣言
// C#
public int Depth {get;}
プロパティ値

現在の行に対するネストの深さ

実装

IDataReader

例外

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

備考

デフォルトは0です。

Oracleはネストをサポートしないので、このプロパティは常に0を返します。

関連項目:

FetchSize

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

宣言
// C#
public long FetchSize {get; set;}
プロパティ値

OracleDataReaderが内部キャッシュに使用するメモリー・サイズをバイト単位で指定するlong

例外

ArgumentException: 指定されたFetchSize値が無効です。

備考

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

FetchSizeプロパティは、結果セットを返すコマンド実行によって作成されるOracleDataReaderに継承されます。OracleDataReaderオブジェクトのFetchSizeプロパティにより、1回のサーバー・ラウンドトリップで内部キャッシュに取り込まれるデータ・サイズが決定します。

関連項目:

FieldCount

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

宣言
// C#
public int FieldCount {get;}
プロパティ値

結果セットが存在する場合はそれに含まれる列数、存在しない場合は0

実装

IDataRecord

例外

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

備考

デフォルトは0です。

問合せが結果セットを返さない場合、このプロパティの値は0になります。

関連項目:

IsClosed

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

宣言
// C#
public bool IsClosed {get;}
プロパティ値

OracleDataReaderがクローズした状態の場合、trueを返し、それ以外の場合、falseを返します。

実装

IDataReader

備考

デフォルトはtrueです。

OracleDataReaderをクローズした後にアクセスできるプロパティは、IsClosedおよびRecordsAffectedのみです。

関連項目:

Item

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

オーバーロード一覧:

Item [index]

このプロパティは、列インデックスで指定された列の.NET値を取得します。

宣言
// C#
public object this[int index] {get;}
パラメータ
プロパティ値

指定された列の.NET値

実装

IDataRecord

備考

デフォルトは適用されません。

C#では、このプロパティはこのクラスのインデクサになります。

関連項目:

Item [string]

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

宣言
// C#
public object this[string columnName] {get;}
パラメータ
プロパティ値

指定された列の.NET値

実装

IDataRecord

備考

デフォルトは適用されません。

名前によって指定された列を見つける際、大/小文字を区別して検索されます。これに失敗した場合は、大/小文字を区別せずに検索が行われます。

C#では、このプロパティはこのクラスのインデクサになります。

関連項目:

InitialLOBFetchSize

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

宣言
// C#
public int InitialLOBFetchSize  {get;}
プロパティ値

取得するチャンク・サイズ

例外

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

備考

InitialLOBFetchSizeで設定できる最大値は32767です。このプロパティをこれより大きい値に設定すると、プロバイダにより32767にリセットされます。

デフォルトは、この値の継承元であるOracleCommand.InitialLOBFetchSizeです。

関連項目:

InitialLONGFetchSize

このプロパティは、LONG列およびLONG RAW列について、OracleDataReaderが最初にフェッチするサイズを指定します。

宣言
// C#
public long InitialLONGFetchSize {get;}
プロパティ値

取得するチャンク・サイズ。デフォルトは0です。

例外

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

備考

InitialLONGFetchSizeで設定できる最大値は32767です。このプロパティをこれより大きい値に設定すると、プロバイダにより32767にリセットされます。

デフォルトは、この値の継承元であるOracleCommand.InitialLONGFetchSizeです。

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

関連項目:

RecordsAffected

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

宣言
// C#
public int RecordsAffected {get;}
プロパティ値

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

実装

IDataReader

備考

デフォルトは0です。

SELECT文の場合は、-1が返されます。

OracleDataReaderをクローズした後にアクセスできるプロパティは、IsClosedおよびRecordsAffectedのみです。

関連項目:

OracleDataReaderのpublicメソッド

OracleDataReaderのpublicメソッドを表4-47に示します。

表4-47 OracleDataReaderのpublicメソッド 
publicメソッド 説明

Close

OracleDataReaderをクローズします。

CreateObjRef

MarshalByRefObjectから継承されます。

Dispose

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

Equals

Objectから継承されます(オーバーロード)。

GetBoolean

サポートされていません。

GetByte

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

GetBytes

列の指定されたオフセット(バイト)から最大バイト数以下のデータを指定されたバイト配列に移入します。

GetChar

サポートされていません。

GetChars

列の指定されたオフセット(文字)から最大文字数以下のデータを指定された文字配列に移入します。

GetData

サポートされていません。

GetDataTypeName

指定された列のODP.NET型名を返します。

GetDateTime

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

GetDecimal

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

GetDouble

指定されたNUMBER列のdouble値を返します。

GetFieldType

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

GetFloat

指定されたNUMBER列のfloat値を返します。

GetGuid

サポートされていません。

GetHashCode

Objectから継承されます。

GetInt16

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

GetInt32

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

GetInt64

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

GetLifetimeService

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構造体を返します。

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から始まる順序番号(インデックス)を返します。

GetSchemaTable

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

GetString

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

GetTimeSpan

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

GetType

Objectクラスから継承されます。

GetValue

列の値を.NET型として返します。

GetValues

すべての列の値を.NET型として取得します。

GetXmlReader

XMLType列の内容を.NETのXmlTextReaderオブジェクトのインスタンスとして返します。

IsDBNull

列の値がnullかどうかを示します。

NextResult

結果を読み込む際に、データ・リーダーを次の結果セットに進めます。

Read

結果セット内の次の行を読み込みます。

ToString

Objectから継承されます。

関連項目:

Close

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

宣言
// C#
public void Close();
実装

IDataReader

備考

Closeメソッドは、OracleDataReaderと関連付けられたすべてのリソースを解放します。

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

関連項目:

Dispose

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

宣言
// C#
public void Dispose();
実装

IDisposable

備考

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

関連項目:

GetByte

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

宣言
// C#
public byte GetByte(int index);
パラメータ
戻り値

バイトで表される列の値

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetBytes

このメソッドは、列の指定されたオフセット(バイト)から最大バイト数以下のデータを指定されたバイト配列に移入します。

宣言
// C#
public long GetBytes(int index, long fieldOffset, byte[] buffer, int
bufferOffset, int length);
パラメータ
戻り値

読み込まれたバイト数

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドは、バッファに読み込まれるバイト数を返します。メソッドが同じ列に対して以前にコールされている場合は、実際のフィールド長より短くなることがあります。

NULL参照がバッファに渡されると、バイト単位のフィールド長が返されます。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetChars

このメソッドは、列の指定されたオフセット(文字)から最大文字数以下のデータを指定された文字配列に移入します。

宣言
// C#
public long GetChars(int index, long fieldOffset, char[] buffer, int
bufferOffset, int length);
パラメータ
戻り値

読み込まれた文字数

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドは、バッファに読み込まれる文字数を返します。メソッドが同じ列に対して以前にコールされている場合は、実際のフィールド長より短くなることがあります。

NULL参照がバッファに渡されると、文字単位のフィールド長が返されます。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetDataTypeName

このメソッドは、指定された列のODP.NET型名を返します。

宣言
// C#
public string GetDataTypeName(int index);
パラメータ
戻り値

列のODP.NET型の名前

実装

IDataRecord

例外

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

IndexOutOfRangeException: 列インデックスが無効です。

関連項目:

GetDateTime

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

宣言
// C#
public DateTime GetDateTime(int index);
パラメータ
戻り値

列のDateTime

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetDecimal

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

宣言
// C#
public decimal GetDecimal(int index);
パラメータ
戻り値

列のdecimal

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetDouble

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

宣言
// C#
public double GetDouble(int index);
パラメータ
戻り値

列のdouble

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetFieldType

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

宣言
// C#
public Type GetFieldType(int index);
パラメータ
戻り値

列のデフォルトの.NET型のType

実装

IDataRecord

例外

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

IndexOutOfRangeException: 列インデックスが無効です。

関連項目:

GetFloat

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

宣言
// C#
public float GetFloat(int index);
パラメータ
戻り値

列のfloat

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetInt16

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


注意:

shortは、Int16と等価です。


宣言
// C#
public short GetInt16(int index);
パラメータ
戻り値

列のInt16

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetInt32

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


注意:

intは、Int32と等価です。


宣言
// C#
public int GetInt32(int index);
パラメータ
戻り値

列のInt32

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetInt64

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


注意:

longは、Int64と等価です。


宣言
// C#
public long GetInt64(int index);
パラメータ
戻り値

列のInt64

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetName

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

宣言
// C#
public string GetName(int index);
パラメータ
戻り値

列の名前

実装

IDataRecord

例外

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

IndexOutOfRangeException: 列インデックスが無効です。

関連項目:

GetOracleBFile

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

宣言
// C#
public OracleBFile GetOracleBFile(int index);
パラメータ
戻り値

列のOracleBFile

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleBinary

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

宣言
// C#
public OracleBinary GetOracleBinary(int index);
パラメータ
戻り値

列のOracleBinary

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

GetOracleBinaryは、次のOracle型で使用されます。

GetOracleBlob

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

宣言
// C#
public OracleBlob GetOracleBlob(int index);
パラメータ
戻り値

列のOracleBlob

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleBlobForUpdate

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

オーバーロード一覧:

GetOracleBlobForUpdate(int)

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

宣言
// C#
public OracleBlob GetOracleBlobForUpdate(int index);
パラメータ
戻り値

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

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

OracleCommandExecuteReader()メソッドがコールされると、OracleDataReaderによってフェッチされるすべてのデータは、特定のスナップショットからのものになります。このため、同じ列でアクセッサ・メソッドをコールすると必ず同じ値が返されます。しかし、GetOracleBlobForUpdate()メソッドをコールした場合、FOR UPDATE句を使用して行をロックしている間も、サーバー・ラウンドトリップが発生し、現在のBLOBデータへの参照を取得します。つまり、元のスナップショットから取得されないため、GetOracleBlob()から取得されたOracleBlobは、GetOracleBlobForUpdate()から取得されたOracleBlobとは値が異なることがあります。

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

内部でこのメソッドをコールすると、WAIT句のないSELECT..FOR UPDATE文が実行されます。このため、その行のロックが取得されるまで、文が無制限に待機します。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

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

// C#
public static void ReadOracleBlobForUpdate(string connStr)
  {
   //get the job description for empno = 1
   string cmdStr = "SELECT BYTECODES, EMPNO FROM EMPINFO where EMPNO = 1";

   OracleConnection connection = new OracleConnection(connStr);
   OracleCommand cmd = new OracleCommand(cmdStr, connection);
   connection.Open();

   //Since we are going to update the OracleBlob object, we will
   //have to create a transaction
   OracleTransaction txn = connection.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 job description Clob object
     byte[] addedBytes = new byte[2] {0, 0};
     byteCodesBlob.Append(addedBytes, 0, addedBytes.Length);

     //Now commit the transaction
     txn.Commit();
    }
    else
      reader.Close();

    // Close the connection
    connection.Close();
  }

関連項目:

GetOracleBlobForUpdate(int, int)

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

宣言
// C#
public OracleBlob GetOracleBlobForUpdate(int index, int wait);
パラメータ
戻り値

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

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

OracleCommandExecuteReader()メソッドがコールされると、OracleDataReaderによってフェッチされるすべてのデータは、特定のスナップショットからのものになります。このため、同じ列でアクセッサ・メソッドをコールすると必ず同じ値が返されます。しかし、GetOracleBlobForUpdate()メソッドをコールした場合、FOR UPDATE句を使用して行をロックしている間も、サーバー・ラウンドトリップが発生し、現在のBLOBデータへの参照を取得します。つまり、元のスナップショットから取得されないため、GetOracleBlob()から取得されたOracleBlobは、GetOracleBlobForUpdate()から取得されたOracleBlobとは値が異なることがあります。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

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

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

waitの値に応じて、文に追加されるWAIT句は異なります。waitの値と、その場合の句を示します。

GetOracleBlobForUpdateメソッドは類似しています。使用方法を示すコードの例は、「例」を参照してください。

関連項目:

GetOracleClob

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

宣言
// C#
public OracleClob GetOracleClob(int index);
パラメータ
戻り値

列のOracleClob

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleClobForUpdate

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

オーバーロード一覧:

GetOracleClobForUpdate(int)

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

宣言
// C#
public OracleClob GetOracleClobForUpdate(int index);
パラメータ
戻り値

更新可能なOracleClob

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

OracleCommandExecuteReader()メソッドがコールされると、OracleDataReaderによってフェッチされるすべてのデータは、特定のスナップショットからのものになります。このため、同じ列でアクセッサ・メソッドをコールすると必ず同じ値が返されます。しかし、GetOracleClobForUpdate()メソッドをコールした場合、FOR UPDATE句を使用して行をロックしている間も、サーバー・ラウンドトリップが発生し、現在のCLOBデータへの参照を取得します。つまり、元のスナップショットから取得されないため、GetOracleClob()から取得されたOracleClobは、GetOracleClobForUpdate()から取得されたOracleClobとは値が異なることがあります。

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

内部でこのメソッドをコールすると、WAIT句のないSELECT..FOR UPDATE文が実行されます。このため、その行のロックが取得されるまで、文が無制限に待機します。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

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

// C#
public static void ReadOracleClobForUpdate(string connStr)
  {
    //get the job description for empno = 1
    string cmdStr = "SELECT JOBDESCRIPTION, EMPNO FROM EMPINFO where EMPNO = 1";

    OracleConnection connection = new OracleConnection(connStr);
    OracleCommand cmd = new OracleCommand(cmdStr, connection);
    connection.Open();

    //Since we are going to update the OracleClob object, we will
    //have to create a transaction
    OracleTransaction txn = connection.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();
    }
    else
      reader.Close();

    // Close the connection
    connection.Close();
  }

関連項目:

GetOracleClobForUpdate(int, int)

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

宣言
// C#
public OracleClob GetOracleClobForUpdate(int index, int wait);
パラメータ
戻り値

更新可能なOracleClob

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

OracleCommandExecuteReader()メソッドがコールされると、OracleDataReaderによってフェッチされるすべてのデータは、特定のスナップショットからのものになります。このため、同じ列でアクセッサ・メソッドをコールすると必ず同じ値が返されます。しかし、GetOracleClobForUpdate()メソッドをコールした場合、FOR UPDATE句を使用して行をロックしている間も、サーバー・ラウンドトリップが発生し、現在のCLOBデータへの参照を取得します。つまり、元のスナップショットから取得されないため、GetOracleClob()から取得されたOracleClobは、GetOracleClobForUpdate()から取得されたOracleClobとは値が異なることがあります。

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

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

waitの値に応じて、文に追加されるWAIT句は異なります。waitの値と、その場合の句を示します。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

GetOracleClobForUpdateメソッドは類似しています。使用方法を示すコードの例は、「例」 を参照してください。

関連項目:

GetOracleDate

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

宣言
// C#
public OracleDate GetOracleDate(int index);
パラメータ
戻り値

列のOracleDate

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleDecimal

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

宣言
// C#
public OracleDecimal GetOracleDecimal(int index);
パラメータ
戻り値

列のOracleDecimal

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleIntervalDS

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

宣言
// C#
public OracleIntervalDS GetOracleIntervalDS(int index);
パラメータ
戻り値

列のOracleIntervalDS

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleIntervalYM

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

宣言
// C#
public OracleIntervalYM GetOracleIntervalYM(int index);
パラメータ
戻り値

列のOracleIntervalYM

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleString

このメソッドは、指定された列のOracleString構造体を返します。文字列はUnicode文字列として格納されます。

宣言
// C#
public OracleString GetOracleString(int index);
パラメータ
戻り値

列のOracleString

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

GetOracleStringは、次のOracle列型で使用されます。

GetOracleTimeStamp

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

宣言
// C#
public OracleTimeStamp GetOracleTimeStamp(int index);
パラメータ
戻り値

列のOracleTimeStamp

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

GetOracleTimeStampは、Oracle型のTimeStampで使用されます。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleTimeStampLTZ

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

宣言
// C#
public OracleTimeStampLTZ GetOracleTimeStampLTZ(int index);
パラメータ
戻り値

列のOracleTimeStampLTZ

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

GetOracleTimeStampLTZは、Oracle型のTIMESTAMP WITH LOCAL TIME ZONE列で使用されます。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleTimeStampTZ

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

宣言
// C#
public OracleTimeStampTZ GetOracleTimeStampTZ(int index);
パラメータ
戻り値

列のOracleTimeStampTZ

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

Oracle型のTIMESTAMP WITH TIME ZONE列で使用されます。

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetOracleXmlType

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

宣言
// C#
public OracleXmlType GetOracleXmlType(int index);
パラメータ
戻り値

列のOracleXmlType

例外

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

要件

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

関連項目:

GetOracleValue

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

宣言
// C#
public object GetOracleValue(int index);
パラメータ
戻り値

ODP.NET型の列の値

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

関連項目:

GetOracleValues

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

宣言
// C#
public int GetOracleValues(object[] values);
パラメータ
戻り値

values配列内のODP.NET型の数

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

備考

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

取得された列の値の数は、values配列の最小の長さであり、結果セットの列数です。

関連項目:

GetOrdinal

このメソッドは、指定された列名の0から始まる順序番号(インデックス)を返します。

宣言
// C#
public int GetOrdinal(string name);
パラメータ
戻り値

列インデックス

実装

IDataRecord

例外

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

IndexOutOfRangeException: 列インデックスが無効です。

備考

名前によって指定された列を見つける際、大/小文字を区別して検索されます。これに失敗した場合は、大/小文字を区別せずに検索が行われます。

関連項目:

GetSchemaTable

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

宣言
// C#
public DataTable GetSchemaTable();
戻り値

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

実装

IDataReader

例外

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

備考

OracleDataReader.GetSchemaTable()は、SchemaTableを返します。

OracleDataReaderのSchemaTable

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

SchemaTableの列の順序は次のとおりです。

表4-48 OracleDataReaderのSchemaTable 
名前 名前タイプ 説明

ColumnNameTB

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

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

実表がBaseTableNameで返された表であり、この列に同じ値を持つ行がない場合、trueです。

IsUniqueは、次のいずれかに相当する場合にtrueになります。

  • 列がキーのみの場合

  • この列にのみ適用される一意制約または一意インデックスがあり、この列に対してNOT null制約が定義されている場合

  • 列が明示的に選択されたROWIDの場合

IsUniqueは、実表で列に重複する値がある場合はfalseです。

デフォルトはfalseです。

このプロパティの値は、選択リストでその実表の列が出現するたびに同じです。

IsKey

System.Boolean

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

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

この列セットは、次のいずれかから、優先順位の高い順に生成できます。

  • 実表の主キー

  • 複合一意制約または複合一意インデックスの場合、その列または全列に対してNOT null制約が定義されているという条件での、一意制約または一意インデックス

  • 全列ではなく、最低1列に対してnull制約が定義されているという条件での、複合一意制約または複合一意インデックス

  • 明示的に選択された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

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

// C#
public static void ReadSchemaTable(string connStr)
 {
   .....

 //get the reader
 OracleDataReader reader = cmd.ExecuteReader();

 //get the schema table
 DataTable schemaTable = reader.GetSchemaTable();

 //retrieve the first column info.
 DataRow col0 = schemaTable.Rows[0];

 //print out the column info
 Console.WriteLine("Column name: " + col0["COLUMNNAME"]);
 Console.WriteLine("Precision: " + col0["NUMERICPRECISION"]);
 Console.WriteLine("Scale: " + col0["NUMERICSCALE"]);
 .....

 }

関連項目:

GetString

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

宣言
// C#
public string GetString(int index);
パラメータ
戻り値

列のstring

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetTimeSpan

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

宣言
// C#
public TimeSpan GetTimeSpan(int index);
パラメータ
戻り値

列のTimeSpan

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

GetValue

このメソッドは、列の値を.NET型として返します。

宣言
// C#
public object GetValue(int index);
パラメータ
戻り値

.NET型の列の値

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

備考

このメソッドがNUMBER列に対してコールされた場合、返される.NET型は列の精度および位取りによって決まります。たとえば、列がNUMBER (4,0)として定義されている場合、この列の値はSystem.Int16として取得されます。

精度および位取りが、.NET型でその列に存在する可能性のあるすべての値を表せないものである場合、値はSystem.Decimalで返されます(可能な場合)。値がSystem.Decimalで表せない場合は、例外が発生します。たとえば、列がNUMBER (20,10)として定義されている場合、この列の値はSystem.Decimalとして取得されます。

関連項目:

GetValues

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

宣言
// C#
public int GetValues(object[ ] values);
パラメータ
戻り値

values配列に含まれるオブジェクト数

実装

IDataRecord

例外

InvalidOperationException: 接続がクローズされているか、リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

備考

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

取得された列の値の数は、値配列の最小の長さであり、結果セットの列数です。

関連項目:

GetXmlReader

このメソッドは、XMLType列の内容を.NETのXmlTextReaderオブジェクトのインスタンスとして返します。

宣言
// C#
public XmlReader GetXmlReader(int index);
パラメータ
戻り値

.NET XmlTextReader

例外

InvalidCastException: この列型に対してアクセッサ・メソッドが無効か、または列の値がnullです。

備考

このメソッドをコールする前に、IsDBNullをコールしてnull値がないか確認してください。

関連項目:

IsDBNull

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

宣言
// C#
public bool IsDBNull(int index);
パラメータ
戻り値

列がnull値の場合、true、それ以外の場合、falseを返します。

実装

IDataRecord

例外

InvalidOperationException: リーダーがクローズされているか、Read()がコールされていないか、またはすべての行が読み込まれました。

IndexOutOfRangeException: 列インデックスが無効です。

備考

その他のアクセッサ・メソッドをコールする前に、このメソッドをコールしてnull値がないか確認してください。

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

関連項目:

NextResult

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

宣言
// C#
public bool NextResult();
戻り値

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

実装

IDataReader

例外

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

備考

複数の結果セットを返すストアド・プロシージャの実行から結果を読み込む場合に、NextResultが使用されます。

関連項目:

Read

このメソッドは、結果セット内の次の行を読み込みます。

宣言
// C#
public bool Read();
戻り値

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

実装

IDataReader

例外

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

備考

データ・リーダーの最初の位置は、1行目の前です。このため、1行目をフェッチするためにReadメソッドをコールする必要があります。読み込まれたばかりの行が、現在の行とみなされます。OracleDataReaderが読み込む行がそれ以上ない場合は、falseを返します。

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

関連項目:


Go to previous page Go to beginning of chapter Go to next page
Oracle
Copyright © 2002, 2003 Oracle Corporation.

All Rights Reserved.
Go To Table Of Contents
目次
Go To Index
索引