OracleDataReaderとは? わかりやすく解説

OracleDataReader クラス

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

名前空間: System.Data.OracleClient
アセンブリ: System.Data.OracleClient (system.data.oracleclient.dll 内)
構文構文

Public NotInheritable Class
 OracleDataReader
    Inherits DbDataReader
Dim instance As OracleDataReader
public sealed class OracleDataReader : DbDataReader
public ref class OracleDataReader sealed :
 public DbDataReader
public final class OracleDataReader extends
 DbDataReader
public final class OracleDataReader extends
 DbDataReader
解説解説

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

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

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

OracleDataReader はいつでも複数開くことができます。

OracleDataReader を使用して Oracle の REF CURSOR を取得する、2 つの Visual Basic の例を次に示します。この例では、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;
/

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

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

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

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

Oracle テーブルを作成し、作成したテーブルにデータを読み込む C# の例を示します。この後の例 (OracleType 構造体を使用したデータに、OracleDataReader を使用してアクセスする例) を実行する前に、この例を実行する必要があります。

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();
   }
}

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

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();
   }
}
使用例使用例

OracleConnection、OracleCommand、および OracleDataReader を作成する例を次に示します。この例では、データを読み取り、コンソールに出力します。最後に、この例では OracleDataReader を閉じてから、OracleConnection を閉じます。

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()
        Dim reader As OracleDataReader
        reader = command.ExecuteReader()
        ' Always call Read before accessing data.
        While reader.Read()
            Console.WriteLine(reader.GetInt32(0).ToString() + ",
 " _
               + reader.GetString(1))
        End While
        ' always call Close when done reading.
        reader.Close()
    End Using
End Sub
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();
        OracleDataReader reader;
        reader = command.ExecuteReader();
        // Always call Read before accessing data.
        while (reader.Read())
        {
            Console.WriteLine(reader.GetInt32(0) + ", " + reader.GetString(1));
        }
        // always call Close when done reading.
        reader.Close();
    }
}
継承階層継承階層
System.Object
   System.MarshalByRefObject
     System.Data.Common.DbDataReader
      System.Data.OracleClient.OracleDataReader
スレッド セーフスレッド セーフ
この型の public static (Visual Basic では Shared) メンバはすべて、スレッド セーフです。インスタンス メンバの場合は、スレッド セーフであるとは限りません。
プラットフォームプラットフォーム
バージョン情報バージョン情報
参照参照
関連項目
OracleDataReader メンバ
System.Data.OracleClient 名前空間

OracleDataReader プロパティ


パブリック プロパティパブリック プロパティ

参照参照

関連項目

OracleDataReader クラス
System.Data.OracleClient 名前空間

OracleDataReader メソッド


パブリック メソッドパブリック メソッド

( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close オーバーライドされます。 OracleDataReader オブジェクトを閉じます。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 ( DbDataReader から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。)
パブリック メソッド GetBoolean オーバーライドされます。 指定した列の値をブール値として取得します。
パブリック メソッド GetByte オーバーライドされます。 指定した列の値をバイトとして取得します。
パブリック メソッド GetBytes オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、バイトのストリームを配列として読み込みます。
パブリック メソッド GetChar オーバーライドされます。 指定した列の値を文字として取得します。
パブリック メソッド GetChars オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、文字のストリームを配列として読み込みます。
パブリック メソッド GetData  要求された列の序数の DbDataReader オブジェクトを返します。 ( DbDataReader から継承されます。)
パブリック メソッド GetDataTypeName オーバーライドされます。 ソース データ型名を取得します。
パブリック メソッド GetDateTime オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。
パブリック メソッド GetDecimal オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。
パブリック メソッド GetDouble オーバーライドされます。 指定した列の値を倍精度浮動小数点数値として取得します。
パブリック メソッド GetEnumerator オーバーライドされます。 データ リーダー内の行を反復処理するために使用できる IEnumerator を返します。
パブリック メソッド GetFieldType オーバーライドされます。 オブジェクトのデータ型である Type を取得します。
パブリック メソッド GetFloat オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。
パブリック メソッド GetGuid オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。)
パブリック メソッド GetInt16 オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。
パブリック メソッド GetInt32 オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。
パブリック メソッド GetInt64 オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド GetName オーバーライドされます。 指定した列の名前を取得します。
パブリック メソッド GetOracleBFile 指定した列の値を OracleBFile オブジェクトとして取得します。
パブリック メソッド GetOracleBinary 指定した列の値を OracleBinary オブジェクトとして取得します。
パブリック メソッド GetOracleDateTime 指定した列の値を OracleDateTime オブジェクトとして取得します。
パブリック メソッド GetOracleLob 指定した列の値を OracleLob オブジェクトとして取得します。
パブリック メソッド GetOracleMonthSpan 指定した列の値を OracleMonthSpan オブジェクトとして取得します。
パブリック メソッド GetOracleNumber 指定した列の値を OracleNumber オブジェクトとして取得します。
パブリック メソッド GetOracleString 指定した列の値を OracleString オブジェクトとして取得します。
パブリック メソッド GetOracleTimeSpan 指定した列の値を OracleTimeSpan オブジェクトとして取得します。
パブリック メソッド GetOracleValue 指定した序数の列の値を Oracle の書式で取得します。
パブリック メソッド GetOracleValues 現在の行のすべての属性列を Oracle の書式で取得します。
パブリック メソッド GetOrdinal オーバーライドされます。 列の名前を指定して、列の序数を取得します。
パブリック メソッド GetProviderSpecificFieldType オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValue オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValues オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。
パブリック メソッド GetSchemaTable オーバーライドされます。 OracleDataReader の列メタデータを記述する DataTable を返します。
パブリック メソッド GetString オーバーライドされます。 指定した列の値を文字列として取得します。
パブリック メソッド GetTimeSpan 指定した列の値を System.TimeSpan として取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 ( Object から継承されます。)
パブリック メソッド GetValue オーバーライドされます。 指定した序数の列の値をネイティブ形式で取得します。
パブリック メソッド GetValues オーバーライドされます。 現在の行のすべての属性列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 ( MarshalByRefObject から継承されます。)
パブリック メソッド IsDBNull オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。
パブリック メソッド NextResult オーバーライドされます。 OracleDataReader を次の結果に進めます。
パブリック メソッド Read オーバーライドされます。 OracleDataReader を次のレコードに進めます。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 ( Object から継承されます。)
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Collections.IEnumerable.GetEnumerator  
参照参照

関連項目

OracleDataReader クラス
System.Data.OracleClient 名前空間

OracleDataReader メンバ

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

OracleDataReader データ型で公開されるメンバを以下の表に示します。


パブリック プロパティパブリック プロパティ
パブリック メソッドパブリック メソッド
( プロテクト メソッド も参照)
  名前 説明
パブリック メソッド Close オーバーライドされます。 OracleDataReader オブジェクトを閉じます。
パブリック メソッド CreateObjRef  リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。 (MarshalByRefObject から継承されます。)
パブリック メソッド Dispose  オーバーロードされます。 DbDataReader によって使用されているリソースを解放します。 (DbDataReader から継承されます。)
パブリック メソッド Equals  オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。)
パブリック メソッド GetBoolean オーバーライドされます。 指定した列の値をブール値として取得します。
パブリック メソッド GetByte オーバーライドされます。 指定した列の値をバイトとして取得します。
パブリック メソッド GetBytes オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、バイトのストリームを配列として読み込みます。
パブリック メソッド GetChar オーバーライドされます。 指定した列の値を文字として取得します。
パブリック メソッド GetChars オーバーライドされます。 指定したバッファ オフセットを開始位置として、指定した列オフセットからバッファに、文字のストリームを配列として読み込みます。
パブリック メソッド GetData  要求された列の序数の DbDataReader オブジェクトを返します。 (DbDataReader から継承されます。)
パブリック メソッド GetDataTypeName オーバーライドされます。 ソース データ型名を取得します。
パブリック メソッド GetDateTime オーバーライドされます。 指定した列の値を DateTime オブジェクトとして取得します。
パブリック メソッド GetDecimal オーバーライドされます。 指定した列の値を Decimal オブジェクトとして取得します。
パブリック メソッド GetDouble オーバーライドされます。 指定した列の値を倍精度浮動小数点数値として取得します。
パブリック メソッド GetEnumerator オーバーライドされます。 データ リーダー内の行を反復処理するために使用できる IEnumerator を返します。
パブリック メソッド GetFieldType オーバーライドされます。 オブジェクトのデータ型である Type を取得します。
パブリック メソッド GetFloat オーバーライドされます。 指定した列の値を単精度浮動小数点数として取得します。
パブリック メソッド GetGuid オーバーライドされます。 指定した列の値をグローバル一意識別子 (GUID) として取得します。
パブリック メソッド GetHashCode  特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。)
パブリック メソッド GetInt16 オーバーライドされます。 指定した列の値を 16 ビット符号付き整数として取得します。
パブリック メソッド GetInt32 オーバーライドされます。 指定した列の値を 32 ビット符号付き整数として取得します。
パブリック メソッド GetInt64 オーバーライドされます。 指定した列の値を 64 ビット符号付き整数として取得します。
パブリック メソッド GetLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド GetName オーバーライドされます。 指定した列の名前を取得します。
パブリック メソッド GetOracleBFile 指定した列の値を OracleBFile オブジェクトとして取得します。
パブリック メソッド GetOracleBinary 指定した列の値を OracleBinary オブジェクトとして取得します。
パブリック メソッド GetOracleDateTime 指定した列の値を OracleDateTime オブジェクトとして取得します。
パブリック メソッド GetOracleLob 指定した列の値を OracleLob オブジェクトとして取得します。
パブリック メソッド GetOracleMonthSpan 指定した列の値を OracleMonthSpan オブジェクトとして取得します。
パブリック メソッド GetOracleNumber 指定した列の値を OracleNumber オブジェクトとして取得します。
パブリック メソッド GetOracleString 指定した列の値を OracleString オブジェクトとして取得します。
パブリック メソッド GetOracleTimeSpan 指定した列の値を OracleTimeSpan オブジェクトとして取得します。
パブリック メソッド GetOracleValue 指定した序数の列の値を Oracle の書式で取得します。
パブリック メソッド GetOracleValues 現在の行のすべての属性列を Oracle の書式で取得します。
パブリック メソッド GetOrdinal オーバーライドされます。 列の名前を指定して、列の序数を取得します。
パブリック メソッド GetProviderSpecificFieldType オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValue オーバーライドされます。 基になるプロバイダ固有フィールド型の内部表現である Object を取得します。
パブリック メソッド GetProviderSpecificValues オーバーライドされます。 基になるプロバイダ固有の値の内部表現であるオブジェクトの配列を取得します。
パブリック メソッド GetSchemaTable オーバーライドされます。 OracleDataReader の列メタデータを記述する DataTable を返します。
パブリック メソッド GetString オーバーライドされます。 指定した列の値を文字列として取得します。
パブリック メソッド GetTimeSpan 指定した列の値を System.TimeSpan として取得します。
パブリック メソッド GetType  現在のインスタンスの Type を取得します。 (Object から継承されます。)
パブリック メソッド GetValue オーバーライドされます。 指定した序数の列の値をネイティブ形式で取得します。
パブリック メソッド GetValues オーバーライドされます。 現在の行のすべての属性列を取得します。
パブリック メソッド InitializeLifetimeService  対象のインスタンスの有効期間ポリシーを制御する、有効期間サービス オブジェクトを取得します。 (MarshalByRefObject から継承されます。)
パブリック メソッド IsDBNull オーバーライドされます。 列に格納されている値が存在しない値または欠損値かどうかを示す値を取得します。
パブリック メソッド NextResult オーバーライドされます。 OracleDataReader を次の結果に進めます。
パブリック メソッド Read オーバーライドされます。 OracleDataReader を次のレコードに進めます。
パブリック メソッド ReferenceEquals  指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。)
パブリック メソッド ToString  現在の Object を表す String を返します。 (Object から継承されます。)
プロテクト メソッドプロテクト メソッド
明示的インターフェイスの実装明示的インターフェイスの実装
  名前 説明
インターフェイスの明示的な実装 System.Collections.IEnumerable.GetEnumerator  
参照参照

関連項目

OracleDataReader クラス
System.Data.OracleClient 名前空間


このページでは「.NET Framework クラス ライブラリ リファレンス」からOracleDataReaderを検索した結果を表示しています。
Weblioに収録されているすべての辞書からOracleDataReaderを検索する場合は、下記のリンクをクリックしてください。
 全ての辞書からOracleDataReader を検索

英和和英テキスト翻訳

英語⇒日本語日本語⇒英語

辞書ショートカット

すべての辞書の索引

「OracleDataReader」の関連用語

OracleDataReaderのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



OracleDataReaderのページの著作権

   
日本マイクロソフト株式会社日本マイクロソフト株式会社
© 2026 Microsoft.All rights reserved.

©2026 GRAS Group, Inc.RSS