OracleDataReader クラス

定義

データ ソースからデータ行の前方向ストリームを読み取る方法を提供します。 このクラスは継承できません。

public ref class OracleDataReader sealed : MarshalByRefObject, IDisposable, System::Collections::IEnumerable, System::Data::IDataReader
public ref class OracleDataReader sealed : System::Data::Common::DbDataReader
public sealed class OracleDataReader : MarshalByRefObject, IDisposable, System.Collections.IEnumerable, System.Data.IDataReader
public sealed class OracleDataReader : System.Data.Common.DbDataReader
type OracleDataReader = class
    inherit MarshalByRefObject
    interface IDataReader
    interface IDisposable
    interface IDataRecord
    interface IEnumerable
type OracleDataReader = class
    inherit DbDataReader
Public NotInheritable Class OracleDataReader
Inherits MarshalByRefObject
Implements IDataReader, IDisposable, IEnumerable
Public NotInheritable Class OracleDataReader
Inherits DbDataReader
継承
OracleDataReader
継承
実装

次の例では、 、 OracleConnectionOracleCommandおよび を作成します OracleDataReader。 この例では、データを読み取り、コンソールに書き出します。 最後に、この例では を閉じ、 OracleDataReader次に を OracleConnection閉じます。

public void ReadData(string connectionString)
{
   string queryString = "SELECT EmpNo, EName FROM Emp";
   using (OracleConnection connection = new OracleConnection(connectionString))
   {
      OracleCommand command = new OracleCommand(queryString, connection);
      connection.Open();
      using(OracleDataReader reader = command.ExecuteReader())
      {
         // Always call Read before accessing data.
         while (reader.Read())
         {
            Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
         }
      }
   }
}
Public Sub ReadData(ByVal connectionString As String)
    Dim queryString As String = "SELECT EmpNo, EName FROM Emp"
    Using connection As New OracleConnection(connectionString)
        Dim command As New OracleCommand(queryString, connection)
        connection.Open()
        Using reader As OracleDataReader = command.ExecuteReader()
            ' Always call Read before accessing data.
            While reader.Read()
                Console.WriteLine(reader.GetInt32(0).ToString() + ", " _
                   + reader.GetString(1))
            End While
        End Using
    End Using
End Sub

注釈

OracleDataReader作成するには、コンストラクターを ExecuteReader 直接使用するのではなく、 オブジェクトの OracleCommand メソッドを呼び出す必要があります。

データの読み取り中に別のプロセスまたはスレッドによって結果セットに加えられた変更は、 OracleDataReaderのユーザーに表示される場合があります。

IsClosed が閉じた後に呼び出すことができるプロパティは、RecordsAffectedOracleDataReader だけです。 場合によっては、 を呼び出す Close 前に を呼び出す RecordsAffected必要があります。

任意の OracleDataReader 時点で複数のを開くことができます。

次の 2 つの Visual Basic の例は、 を OracleDataReader 使用して Oracle REF CURSORを取得する方法を示しています。 これらの例では、Oracle Scott/Tiger スキーマで定義され、次の PL/SQL パッケージとパッケージ本文が必要なテーブルを使用します。 これらの例を使用するには、サーバーでこれらを作成する必要があります。

次の Oracle パッケージを Oracle サーバー上に作成します。

CREATE OR REPLACE PACKAGE CURSPKG AS   
   TYPE T_CURSOR IS REF CURSOR;   
   PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
      IO_CURSOR IN OUT T_CURSOR);   
   PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
      DEPTCURSOR OUT T_CURSOR);  
END CURSPKG;  
/  

Oracle サーバーで、次の Oracle パッケージ本体を作成します。

CREATE OR REPLACE PACKAGE BODY CURSPKG AS   
    PROCEDURE OPEN_ONE_CURSOR (N_EMPNO IN NUMBER,   
                               IO_CURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR T_CURSOR;   
    BEGIN   
        IF N_EMPNO <> 0 THEN   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO   
                        AND EMP.EMPNO = N_EMPNO;   
        ELSE   
             OPEN V_CURSOR FOR   
             SELECT EMP.EMPNO, EMP.ENAME, DEPT.DEPTNO, DEPT.DNAME   
                  FROM EMP, DEPT   
                  WHERE EMP.DEPTNO = DEPT.DEPTNO;   
        END IF;   
        IO_CURSOR := V_CURSOR;   
    END OPEN_ONE_CURSOR;   
    PROCEDURE OPEN_TWO_CURSORS (EMPCURSOR OUT T_CURSOR,   
                                DEPTCURSOR OUT T_CURSOR)   
    IS   
        V_CURSOR1 T_CURSOR;   
        V_CURSOR2 T_CURSOR;   
    BEGIN   
        OPEN V_CURSOR1 FOR SELECT * FROM EMP;   
        OPEN V_CURSOR2 FOR SELECT * FROM DEPT;   
        EMPCURSOR  := V_CURSOR1;   
        DEPTCURSOR := V_CURSOR2;   
    END OPEN_TWO_CURSORS;   
END CURSPKG;  
/  

次の Visual Basic の例では、パラメーターを返す PL/SQL ストアド プロシージャを REF CURSOR 実行し、値を OracleDataReaderとして読み取ります。

Private Sub ReadOracleData(ByVal connectionString As String)  
   Dim connection As New OracleConnection(connectionString)  
   Dim command As New OracleCommand()  
   Dim reader As OracleDataReader  

   connection.Open()  
   command.Connection = connection  
   command.CommandText = "CURSPKG.OPEN_ONE_CURSOR"  
   command.CommandType = CommandType.StoredProcedure  
   command.Parameters.Add(New OracleParameter("N_EMPNO", OracleType.Number)).Value = 7369  
   command.Parameters.Add(New OracleParameter("IO_CURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output  

   reader = command.ExecuteReader()  
   While (reader.Read())  
      ' Do something with the values.  
   End While  
   reader.Close()  
   connection.Close()  
End Sub  

次の Visual Basic の例では、2 つの REF CURSOR パラメーターを返す PL/SQL ストアド プロシージャを実行し、 を使用して値を OracleDataReader読み取ります。

Private Sub ReadOracleData(ByVal connectionString As String)  
   Dim dataSet As New DataSet()  
   Dim connection As New OracleConnection(connectionString)  
   Dim command As New OracleCommand()  
   Dim reader As OracleDataReader  

   connection.Open()  
   command.Connection = connection  
   command.CommandText = "CURSPKG.OPEN_TWO_CURSORS"  
   command.CommandType = CommandType.StoredProcedure  
   command.Parameters.Add(New OracleParameter("EMPCURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output  
   command.Parameters.Add(New OracleParameter("DEPTCURSOR", OracleType.Cursor)).Direction = ParameterDirection.Output  

   reader = command.ExecuteReader(CommandBehavior.CloseConnection)  
   While (reader.Read())  
      ' Do something with the values.  
   End While  
   reader.NextResult()  
   While (reader.Read())  
        ' Do something with the values.  
   End While  
   reader.Close()  
   connection.Close()  
 End Sub  

この C# の例では、Oracle テーブルを作成し、データと共に読み込みます。 次の例を実行する前に、この例を実行する必要があります。この例では、 を OracleDataReader 使用して OracleType 構造体を使用してデータにアクセスする方法を示します。

public void Setup(string connectionString)  
{  
   OracleConnection connection = new OracleConnection(connectionString);  
   try  
   {  
      connection.Open();  
      OracleCommand command = connection.CreateCommand();  
      command.CommandText ="CREATE TABLE OracleTypesTable (MyVarchar2 varchar2(3000),MyNumber number(28,4) PRIMARY KEY,MyDate date, MyRaw raw(255))";  
      command.ExecuteNonQuery();  
      command.CommandText ="INSERT INTO OracleTypesTable VALUES ('test', 2, to_date('2000-01-11 12:54:01','yyyy-mm-dd hh24:mi:ss'), '0001020304')";  
      command.ExecuteNonQuery();  
      command.CommandText="SELECT * FROM OracleTypesTable";  
   }  
   catch(Exception)  
   {  
   }  
   finally  
   {  
      connection.Close();  
   }  
}  

この C# の例では、 を OracleDataReader 使用してデータにアクセスし、複数 OracleType の構造体を使用してデータを表示します。

public void ReadOracleTypesExample(string connectionString)  
{  
   OracleConnection connection = new OracleConnection(connectionString);  
   connection.Open();  
   OracleCommand command = connection.CreateCommand();  
   try  
   {  
      command.CommandText = "SELECT * FROM OracleTypesTable";  
      OracleDataReader reader = command.ExecuteReader();  
      reader.Read();  
      //Using the Oracle specific getters for each type is faster than  
      //using GetOracleValue.  
      //First column, MyVarchar2, is a VARCHAR2 data type in Oracle Server  
      //and maps to OracleString.  
      OracleString oraclestring1 = reader.GetOracleString(0);  
      Console.WriteLine("OracleString " + oraclestring1.ToString());  

      //Second column, MyNumber, is a NUMBER data type in Oracle Server  
      //and maps to OracleNumber.  
      OracleNumber oraclenumber1 = reader.GetOracleNumber(1);  
      Console.WriteLine("OracleNumber " + oraclenumber1.ToString());  

      //Third column, MyDate, is a DATA data type in Oracle Server  
      //and maps to OracleDateTime.  
      OracleDateTime oracledatetime1 = reader.GetOracleDateTime(2);  
      Console.WriteLine("OracleDateTime " + oracledatetime1.ToString());  

      //Fourth column, MyRaw, is a RAW data type in Oracle Server and  
      //maps to OracleBinary.  
      OracleBinary oraclebinary1 = reader.GetOracleBinary(3);  

      //Calling value on a null OracleBinary throws  
      //OracleNullValueException; therefore, check for a null value.  
      if (oraclebinary1.IsNull==false)  
      {  
         foreach(byte b in oraclebinary1.Value)  
         {  
            Console.WriteLine("byte " + b.ToString());  
         }  
      }  
      reader.Close();  
   }  
   catch(Exception e)  
   {  
      Console.WriteLine(e.ToString());  
   }  
   finally  
   {  
      connection.Close();  
   }  
}  

プロパティ

Depth

現在の行の入れ子の深さを示す値を取得します。

FieldCount

現在の行の列の数を取得します。

HasRows

OracleDataReader に 1 行以上の行が格納されているかどうかを示す値を取得します。

IsClosed

OracleDataReader が閉じているかどうかを示します。

Item[Int32]

列の序数によって指定した列の値をネイティブ形式で取得します。

Item[String]

列名によって指定した列の値をネイティブ形式で取得します。

RecordsAffected

SQL ステートメントの実行によって変更、挿入、または削除された行の数を取得します。

VisibleFieldCount

DbDataReader 内の表示フィールドの数を取得します。

(継承元 DbDataReader)

メソッド

Close()

OracleDataReader オブジェクトを閉じます。

CloseAsync()

DbDataReader オブジェクトを非同期に閉じます。

(継承元 DbDataReader)
CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。

(継承元 MarshalByRefObject)
Dispose()

このオブジェクトによって使用されているリソースを解放します。

Dispose()

DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを解放します。

(継承元 DbDataReader)
Dispose(Boolean)

DbDataReader によって使用されているアンマネージド リソースを解放し、オプションでマネージド リソースも解放します。

(継承元 DbDataReader)
DisposeAsync()

DbDataReader クラスの現在のインスタンスによって使用されているすべてのリソースを非同期で解放します。

(継承元 DbDataReader)
Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetBoolean(Int32)

指定された列の値を Boolean として取得します。

GetByte(Int32)

指定された列の値をバイトとして取得します。

GetBytes(Int32, Int64, Byte[], Int32, Int32)

指定した列オフセットから、指定したバッファー オフセットから始まるバイトのストリームを、配列としてバッファーに読み取ります。

GetChar(Int32)

指定した列の値を文字として取得します。

GetChars(Int32, Int64, Char[], Int32, Int32)

指定した列オフセットから、指定したバッファー オフセットから始まる文字列ストリームを、配列としてバッファーに読み取ります。

GetColumnSchemaAsync(CancellationToken)

これは GetColumnSchema(DbDataReader) の非同期バージョンです。 プロバイダーは、適切な実装でオーバーライドする必要があります。 必要に応じて、cancellationToken を優先できます。 既定の実装は同期 GetColumnSchema(DbDataReader) コールを呼び出し、完了したタスクを返します。 既定の実装は、既に取り消された cancellationToken を渡した場合、取り消されたタスクを返します。 GetColumnSchema(DbDataReader) によってスローされる例外は、返されたタスクの Exception プロパティを介して通信されます。

(継承元 DbDataReader)
GetData(Int32)

指定された列序数の IDataReader を返します。

GetData(Int32)

要求された列に対して、入れ子になったデータ リーダーを返します。

(継承元 DbDataReader)
GetDataTypeName(Int32)

ソース データ型名を取得します。

GetDateTime(Int32)

指定された列の値を DateTime オブジェクトとして取得します。

GetDbDataReader(Int32)

プロバイダー固有の実装でオーバーライドできる、要求された列序数に対応した DbDataReader オブジェクトを返します。

(継承元 DbDataReader)
GetDecimal(Int32)

指定された列の値を Decimal オブジェクトとして取得します。

GetDouble(Int32)

指定した列の値を倍精度浮動小数点数として取得します。

GetEnumerator()

データ リーダー内の行に対して反復処理を行うために使用できる IEnumerator を返します。

GetFieldType(Int32)

オブジェクトのデータ型である Type を取得します。

GetFieldValue<T>(Int32)

要求された型として指定した列の値を取得します。

(継承元 DbDataReader)
GetFieldValueAsync<T>(Int32)

要求された型として指定された列の値を非同期で取得します。

(継承元 DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

要求された型として指定された列の値を非同期で取得します。

(継承元 DbDataReader)
GetFloat(Int32)

指定した列の値を単精度浮動小数点数として取得します。

GetGuid(Int32)

指定された列の値をグローバル一意識別子 (GUID) として取得します。

GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetInt16(Int32)

指定した列の値を 16 ビット符号付き整数として取得します。

GetInt32(Int32)

指定された列の値を 32 ビット符号付き整数として取得します。

GetInt64(Int32)

指定された列の値を 64 ビット符号付き整数として取得します。

GetLifetimeService()
古い.

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
GetName(Int32)

指定した列の名前を取得します。

GetOracleBFile(Int32)

指定した列の値を OracleBFile オブジェクトとして取得します。

GetOracleBinary(Int32)

指定した列の値を OracleBinary オブジェクトとして取得します。

GetOracleDateTime(Int32)

指定した列の値を OracleDateTime オブジェクトとして取得します。

GetOracleLob(Int32)

指定した列の値を OracleLob オブジェクトとして取得します。

GetOracleMonthSpan(Int32)

指定した列の値を OracleMonthSpan オブジェクトとして取得します。

GetOracleNumber(Int32)

指定した列の値を OracleNumber オブジェクトとして取得します。

GetOracleString(Int32)

指定した列の値を OracleString オブジェクトとして取得します。

GetOracleTimeSpan(Int32)

指定した列の値を OracleTimeSpan オブジェクトとして取得します。

GetOracleValue(Int32)

指定した序数の列の値を Oracle の書式で取得します。

GetOracleValues(Object[])

現在の行のすべての属性列を Oracle の書式で取得します。

GetOrdinal(String)

列の名前を指定して、列の序数を取得します。

GetProviderSpecificFieldType(Int32)

基になるプロバイダー固有フィールド型の内部表現である Object を取得します。

GetProviderSpecificValue(Int32)

基になるプロバイダー固有フィールド型の内部表現である Object を取得します。

GetProviderSpecificValues(Object[])

基になるプロバイダー固有の値の内部表現であるオブジェクトの配列を取得します。

GetSchemaTable()

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

GetSchemaTableAsync(CancellationToken)

これは GetSchemaTable() の非同期バージョンです。 プロバイダーは、適切な実装でオーバーライドする必要があります。 必要に応じて、cancellationToken を優先できます。 既定の実装は同期 GetSchemaTable() コールを呼び出し、完了したタスクを返します。 既定の実装は、既に取り消された cancellationToken を渡した場合、取り消されたタスクを返します。 GetSchemaTable() によってスローされる例外は、返されたタスクの Exception プロパティを介して通信されます。

(継承元 DbDataReader)
GetStream(Int32)

指定された列からデータを取得する目的でストリームを取得します。

(継承元 DbDataReader)
GetString(Int32)

指定した列の値を文字列として取得します。

GetTextReader(Int32)

列からデータを取得する目的でテキスト リーダーを取得します。

(継承元 DbDataReader)
GetTimeSpan(Int32)

指定した列の値を System.TimeSpan として取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
GetValue(Int32)

指定した序数の列の値をネイティブ形式で取得します。

GetValues(Object[])

オブジェクトの配列に現在行の列値を設定します。

InitializeLifetimeService()
古い.

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。

(継承元 MarshalByRefObject)
IsDBNull(Int32)

列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。

IsDBNullAsync(Int32)

列に格納されている値が存在しない値または欠損値かどうかを示す値を非同期で取得します。

(継承元 DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

列に格納されている値が存在しない値または欠損値かどうかを示す値を非同期で取得します。

(継承元 DbDataReader)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。

(継承元 MarshalByRefObject)
NextResult()

OracleDataReader を次の結果に進めます。

NextResultAsync()

バッチ ステートメントの結果を読み取っているときに、次の結果にリーダーを非同期で進めます。

(継承元 DbDataReader)
NextResultAsync(CancellationToken)

バッチ ステートメントの結果を読み取っているときに、次の結果にリーダーを非同期で進めます。

(継承元 DbDataReader)
Read()

OracleDataReader を次のレコードに進めます。

ReadAsync()

結果セット内の次のレコードにリーダーを非同期で進めます。

(継承元 DbDataReader)
ReadAsync(CancellationToken)

結果セット内の次のレコードにリーダーを非同期で進めます。

(継承元 DbDataReader)
ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

明示的なインターフェイスの実装

IDataRecord.GetData(Int32)

このメンバーの詳細については、「GetData(Int32)」をご覧ください。

(継承元 DbDataReader)
IEnumerable.GetEnumerator()

コレクションを反復処理する列挙子を返します。

拡張メソッド

CanGetColumnSchema(DbDataReader)

DbDataReader が列スキーマを取得できるかどうかを示す値を取得します。

GetColumnSchema(DbDataReader)

DbDataReader 用に、列のスキーマ (DbColumn コレクション) を取得します。

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。

AsParallel(IEnumerable)

クエリの並列化を有効にします。

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。

適用対象