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
상속
구현

예제

다음 예제에서는 , OracleConnection및 .를 OracleCommandOracleDataReader만듭니다. 이 예제에서는 데이터를 읽고 콘솔에 기록합니다. 마지막으로, 이 예제에서는 다음OracleConnectionOracleDataReader닫습니다.

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직접 사용하는 대신 개체의 OracleCommand 메서드를 호출 ExecuteReader 해야 합니다.

데이터를 읽는 동안 다른 프로세스 또는 스레드에서 결과 집합을 변경한 내용은 해당 사용자에게 OracleDataReader표시될 수 있습니다.

IsClosed RecordsAffected 은 닫힌 후 OracleDataReader 호출할 수 있는 유일한 속성입니다. 경우에 따라 호출RecordsAffected하려면 먼저 호출 Close 해야 합니다.

지정된 시간에 둘 OracleDataReader 이상을 열 수 있습니다.

다음 두 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 예제에서는 REF CURSOR 매개 변수를 반환하고 값을 OracleDataReader 읽는 PL/SQL 저장 프로시저를 실행합니다.

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 예제에서는 두 개의 REF CURSOR 매개 변수를 반환하고 OracleDataReader 사용하여 값을 읽는 PL/SQL 저장 프로시저를 실행합니다.

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 테이블을 만들고 데이터로 로드합니다. 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();
   }
}

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

속성

Name Description
Depth

현재 행의 중첩 깊이를 나타내는 값을 가져옵니다.

FieldCount

현재 행의 열 수를 가져옵니다.

HasRows

행이 하나 이상 포함되어 있는지 여부를 OracleDataReader 나타내는 값을 가져옵니다.

IsClosed

닫혀 있는지 여부를 OracleDataReader 나타냅니다.

Item[Int32]

열 서수가 지정된 경우 지정된 열의 값을 네이티브 형식으로 가져옵니다.

Item[String]

열 이름이 지정된 경우 지정된 열의 값을 네이티브 형식으로 가져옵니다.

RecordsAffected

SQL 문을 실행하여 변경, 삽입 또는 삭제된 행 수를 가져옵니다.

VisibleFieldCount

숨겨지지 않은 필드 DbDataReader 의 수를 가져옵니다.

(다음에서 상속됨 DbDataReader)

메서드

Name Description
Close()

개체를 닫습니다 OracleDataReader .

CreateObjRef(Type)

원격 개체와 통신하는 데 사용되는 프록시를 생성하는 데 필요한 모든 관련 정보를 포함하는 개체를 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
Dispose()

이 개체에서 사용하는 리소스를 해제합니다.

Dispose()

DbDataReader 클래스의 현재 인스턴스에서 사용하는 모든 리소스를 해제합니다.

(다음에서 상속됨 DbDataReader)
Dispose(Boolean)

관리되지 않는 리소스를 DbDataReader 해제하고 관리되는 리소스를 선택적으로 해제합니다.

(다음에서 상속됨 DbDataReader)
Equals(Object)

지정한 개체와 현재 개체가 같은지 여부를 확인합니다.

(다음에서 상속됨 Object)
GetBoolean(Int32)

지정된 열의 값을 부울로 가져옵니다.

GetByte(Int32)

지정된 열의 값을 바이트로 가져옵니다.

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

지정된 열 오프셋에서 버퍼로 지정된 버퍼 오프셋부터 시작하여 배열로 바이트 스트림을 읽습니다.

GetChar(Int32)

지정된 열의 값을 문자로 가져옵니다.

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

지정된 열 오프셋의 문자 스트림을 지정된 버퍼 오프셋에서 시작하여 배열로 버퍼로 읽습니다.

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, CancellationToken)

지정된 열의 값을 요청된 형식으로 비동기적으로 가져옵니다.

(다음에서 상속됨 DbDataReader)
GetFieldValueAsync<T>(Int32)

지정된 열의 값을 요청된 형식으로 비동기적으로 가져옵니다.

(다음에서 상속됨 DbDataReader)
GetFloat(Int32)

지정된 열의 값을 단정밀도 부동 소수점 숫자로 가져옵니다.

GetGuid(Int32)

지정된 열의 값을 GUID(Globally Unique Identifier)로 가져옵니다.

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

DataTable OracleDataReader의 열 메타데이터를 설명하는 값을 반환합니다.

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, CancellationToken)

열에 존재하지 않거나 누락된 값이 포함되어 있는지 여부를 나타내는 값을 비동기적으로 가져옵니다.

(다음에서 상속됨 DbDataReader)
IsDBNullAsync(Int32)

열에 존재하지 않거나 누락된 값이 포함되어 있는지 여부를 나타내는 값을 비동기적으로 가져옵니다.

(다음에서 상속됨 DbDataReader)
MemberwiseClone()

현재 Object단순 복사본을 만듭니다.

(다음에서 상속됨 Object)
MemberwiseClone(Boolean)

현재 MarshalByRefObject 개체의 단순 복사본을 만듭니다.

(다음에서 상속됨 MarshalByRefObject)
NextResult()

다음 결과로 진행합니다 OracleDataReader .

NextResultAsync()

문 일괄 처리 결과를 읽을 때 판독기를 다음 결과로 비동기적으로 진행합니다.

(다음에서 상속됨 DbDataReader)
NextResultAsync(CancellationToken)

문 일괄 처리 결과를 읽을 때 판독기를 다음 결과로 비동기적으로 진행합니다.

(다음에서 상속됨 DbDataReader)
Read()

다음 레코드로 진행합니다 OracleDataReader .

ReadAsync()

결과 집합의 다음 레코드로 판독기를 비동기적으로 진행합니다.

(다음에서 상속됨 DbDataReader)
ReadAsync(CancellationToken)

결과 집합의 다음 레코드로 판독기를 비동기적으로 진행합니다.

(다음에서 상속됨 DbDataReader)
ToString()

현재 개체를 나타내는 문자열을 반환합니다.

(다음에서 상속됨 Object)

명시적 인터페이스 구현

Name Description
IDataRecord.GetData(Int32)

이 멤버에 대한 설명은 을 참조하세요 GetData(Int32).

(다음에서 상속됨 DbDataReader)
IEnumerable.GetEnumerator()

컬렉션을 반복하는 열거자를 반환합니다.

확장명 메서드

Name Description
AsParallel(IEnumerable)

쿼리의 병렬 처리를 사용하도록 설정합니다.

AsQueryable(IEnumerable)

IEnumerable IQueryable변환합니다.

CanGetColumnSchema(DbDataReader)

열 스키마를 DbDataReader 가져올 수 있는지 여부를 나타내는 값을 가져옵니다.

Cast<TResult>(IEnumerable)

IEnumerable 요소를 지정된 형식으로 캐스팅합니다.

GetColumnSchema(DbDataReader)

에 대한 열 스키마(DbColumn 컬렉션)를 DbDataReader가져옵니다.

OfType<TResult>(IEnumerable)

지정된 형식에 따라 IEnumerable 요소를 필터링합니다.

적용 대상