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使用して OracleREF 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 名前空間


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

英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「OracleDataReader クラス」の関連用語

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

   

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



OracleDataReader クラスのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

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

©2024 GRAS Group, Inc.RSS