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

예제

다음 예제에서는 , 및 OracleCommandOracleDataReader를 만듭니다OracleConnection. 이 예제에서는 데이터를 읽고 콘솔에 기록합니다. 마지막으로, 예제는 다음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가 닫힌 후 호출할 수 있는 속성은 RecordsAffectedOracleDataReader뿐입니다. 경우에 따라 호출RecordsAffected하려면 먼저 호출 Close 해야 합니다.

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

다음 두 Visual Basic 예제에서는 OracleREF CURSOR을 검색 OracleDataReader 하는 방법을 보여 줍니다. 이러한 예제에서는 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 하고 값을 읽는 PL/SQL 저장 프로시저를 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 예제에서는 두 개의 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 테이블을 만들고 데이터로 로드합니다. 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();  
   }  
}  

속성

Depth

현재 행의 중첩 수준을 나타내는 값을 가져옵니다.

FieldCount

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

HasRows

OracleDataReader에 하나 이상의 행이 있는지 여부를 나타내는 값을 가져옵니다.

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)에서 throw되는 예외는 반환된 Task 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(Globally Unique ID)를 가져옵니다.

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()에서 throw되는 예외는 반환된 Task 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로 변환합니다.

적용 대상