プライマリ・コンテンツに移動

Oracle® Data Provider for .NET開発者ガイド ODAC 12.2c リリース1 (12.2.0.1) for Microsoft Windows E88311-03 |
| 目次 | 索引

前 | 次 |

# OracleDataReaderクラス

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

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

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

- LONGおよびLONG RAWデータの取得

- OracleDataReaderオブジェクトからのデータの取得

クラスの継承

`System.Object`

`System.MarshalByRefObject`

`System.Data.Common.DataReader`

`System.Data.Common.DbDataReader`

`Oracle.DataAccess.Client.OracleDataReader`

宣言

    // C#
    public sealed class OracleDataReader : DbDataReader, IEnumerable,
       IDataReader, IDisposable, IDataRecord

要件

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

スレッド安全性

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

備考

`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.ManagedDataAccess.Clientのネームスペース

- OracleDataReaderメンバー

- OracleDataReader静的メソッド

- OracleDataReaderプロパティ

- OracleDataReaderパブリック・メソッド

- OracleDataReader SchemaTable