Compartilhar via


OracleDataReader Classe

Definição

Fornece uma maneira de ler um fluxo somente de encaminhamento de linhas de dados por meio de uma fonte de dados. Essa classe não pode ser herdada.

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
Herança
OracleDataReader
Herança
Implementações

Exemplos

O exemplo a seguir cria um OracleConnection, um OracleCommande um OracleDataReader. O exemplo lê os dados, gravando-os no console. Por fim, o exemplo fecha o OracleDataReadere o OracleConnection.

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

Comentários

Para criar um OracleDataReader, você deve chamar o ExecuteReader método do objeto, em vez de OracleCommand usar diretamente um construtor.

As alterações feitas em um conjunto de resultados por outro processo ou thread enquanto os dados estão sendo lidos podem estar visíveis para o usuário do OracleDataReader.

IsClosed e RecordsAffected são as únicas propriedades que podem ser chamadas depois que o OracleDataReader for fechado. Em alguns casos, você deve chamar Close antes de chamar RecordsAffected.

Mais de um OracleDataReader pode ser aberto a qualquer momento.

Os dois exemplos do Visual Basic a seguir demonstram como usar um OracleDataReader para recuperar um Oracle REF CURSOR. Esses exemplos usam tabelas definidas no esquema Oracle Scott/Tiger e exigem o pacote PL/SQL e o corpo do pacote a seguir. Você deve criá-los em seu servidor para usar os exemplos.

Crie o seguinte pacote Oracle no servidor 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;  
/  

Crie o seguinte corpo do pacote Oracle no servidor 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;  
/  

Este exemplo do Visual Basic executa um procedimento armazenado PL/SQL que retorna um REF CURSOR parâmetro e lê o valor como um 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  

Este exemplo do Visual Basic executa um procedimento armazenado PL/SQL que retorna dois REF CURSOR parâmetros e lê os valores usando um 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  

Este exemplo de C# cria uma tabela Oracle e a carrega com dados. Você deve executar este exemplo antes de executar o exemplo subsequente, que demonstra o uso de um OracleDataReader para acessar os dados usando estruturas OracleType.

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

Este exemplo de C# usa um OracleDataReader para acessar dados e usa várias OracleType estruturas para exibir os dados.

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

Propriedades

Depth

Obtém um valor que indica a profundidade de aninhamento da linha atual.

FieldCount

Obtém o número de colunas na linha atual.

HasRows

Obtém um valor que indica se o OracleDataReader contém uma ou mais linhas.

IsClosed

Indica se o OracleDataReader está fechado.

Item[Int32]

Obtém o valor da coluna especificada em seu formato nativo de acordo com o ordinal da coluna.

Item[String]

Obtém o valor da coluna especificada em seu formato nativo de acordo com o nome da coluna.

RecordsAffected

Obtém o número de linhas alteradas, inseridas ou excluídas pela execução da instrução SQL.

VisibleFieldCount

Obtém o número de campos em DbDataReader que não estão ocultos.

(Herdado de DbDataReader)

Métodos

Close()

Fecha o objeto OracleDataReader.

CloseAsync()

Fecha de maneira assíncrona o objeto DbDataReader.

(Herdado de DbDataReader)
CreateObjRef(Type)

Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Libera os recursos usados por este objeto.

Dispose()

Libera todos os recursos usados pela instância atual da classe DbDataReader.

(Herdado de DbDataReader)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo DbDataReader e opcionalmente libera os recursos gerenciados.

(Herdado de DbDataReader)
DisposeAsync()

Libera de forma assíncrona todos os recursos usados pela instância atual da classe DbDataReader.

(Herdado de DbDataReader)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetBoolean(Int32)

Obtém o valor da coluna especificada como um booliano.

GetByte(Int32)

Obtém o valor da coluna especificada como um byte.

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

Lê um fluxo de bytes do deslocamento de coluna especificado no buffer como uma matriz, iniciando no deslocamento de buffer especificado.

GetChar(Int32)

Obtém o valor da coluna especificada como um caractere.

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

Lê um fluxo de caracteres do deslocamento de coluna especificado no buffer como uma matriz iniciada no deslocamento de buffer fornecido.

GetColumnSchemaAsync(CancellationToken)

Essa é a versão assíncrona de GetColumnSchema(DbDataReader). Provedores devem substituir com uma implementação apropriada. Opcionalmente, o cancellationToken pode ser respeitado. A implementação padrão invoca a chamada GetColumnSchema(DbDataReader) síncrona e retorna uma tarefa concluída. A implementação padrão retornará uma tarefa cancelada se já tiver passado um cancellationToken cancelado. Exceções geradas por GetColumnSchema(DbDataReader) serão comunicadas por meio da propriedade Exceção de Tarefa retornada.

(Herdado de DbDataReader)
GetData(Int32)

Retorna um IDataReader para o ordinal da coluna especificada.

GetData(Int32)

Retorna um leitor de dados aninhado para a coluna solicitada.

(Herdado de DbDataReader)
GetDataTypeName(Int32)

Obtém o nome do tipo de dados de origem.

GetDateTime(Int32)

Obtém o valor da coluna especificada como um objeto DateTime.

GetDbDataReader(Int32)

Retorna um objeto DbDataReader para o ordinal da coluna solicitado que pode ser substituído por uma implementação específica do provedor.

(Herdado de DbDataReader)
GetDecimal(Int32)

Obtém o valor da coluna especificada como um objeto Decimal.

GetDouble(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão dupla.

GetEnumerator()

Retorna um IEnumerator que pode ser usado para iterar pelas linhas do leitor de dados.

GetFieldType(Int32)

Obtém o Type que é o tipo de dados do objeto.

GetFieldValue<T>(Int32)

Obtém o valor da coluna especificada como um tipo solicitado.

(Herdado de DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Obtém de forma assíncrona o valor da coluna especificada como um tipo solicitado.

(Herdado de DbDataReader)
GetFieldValueAsync<T>(Int32)

Obtém de forma assíncrona o valor da coluna especificada como um tipo solicitado.

(Herdado de DbDataReader)
GetFloat(Int32)

Obtém o valor da coluna especificada como um número de ponto flutuante de precisão simples.

GetGuid(Int32)

Obtém o valor da coluna especificada como um GUID (identificador global exclusivo).

GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetInt16(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 16 bits.

GetInt32(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 32 bits.

GetInt64(Int32)

Obtém o valor da coluna especificada como um inteiro com sinal de 64 bits.

GetLifetimeService()
Obsoleto.

Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância.

(Herdado de MarshalByRefObject)
GetName(Int32)

Obtém o nome da coluna especificada.

GetOracleBFile(Int32)

Obtém o valor da coluna especificada como um objeto OracleBFile.

GetOracleBinary(Int32)

Obtém o valor da coluna especificada como um objeto OracleBinary.

GetOracleDateTime(Int32)

Obtém o valor da coluna especificada como um objeto OracleDateTime.

GetOracleLob(Int32)

Obtém o valor da coluna especificada como um objeto OracleLob.

GetOracleMonthSpan(Int32)

Obtém o valor da coluna especificada como um objeto OracleMonthSpan.

GetOracleNumber(Int32)

Obtém o valor da coluna especificada como um objeto OracleNumber.

GetOracleString(Int32)

Obtém o valor da coluna especificada como um objeto OracleString.

GetOracleTimeSpan(Int32)

Obtém o valor da coluna especificada como um objeto OracleTimeSpan.

GetOracleValue(Int32)

Obtém o valor da coluna no ordinal especificado em seu formato Oracle.

GetOracleValues(Object[])

Obtém todas as colunas de atributo na linha atual no formato Oracle.

GetOrdinal(String)

Obtém a ordinal da coluna, de acordo com o nome da coluna.

GetProviderSpecificFieldType(Int32)

Obtém um Object que é uma representação do tipo de campo específico do provedor subjacente.

GetProviderSpecificValue(Int32)

Obtém um Object que é uma representação do tipo de campo específico do provedor subjacente.

GetProviderSpecificValues(Object[])

Obtém uma matriz de objetos que são uma representação dos valores específicos do provedor subjacente.

GetSchemaTable()

Retorna um DataTable que descreve os metadados da coluna de OracleDataReader.

GetSchemaTableAsync(CancellationToken)

Essa é a versão assíncrona de GetSchemaTable(). Provedores devem substituir com uma implementação apropriada. Opcionalmente, o cancellationToken pode ser respeitado. A implementação padrão invoca a chamada GetSchemaTable() síncrona e retorna uma tarefa concluída. A implementação padrão retornará uma tarefa cancelada se já tiver passado um cancellationToken cancelado. Exceções geradas por GetSchemaTable() serão comunicadas por meio da propriedade Exceção de Tarefa retornada.

(Herdado de DbDataReader)
GetStream(Int32)

Obtém um fluxo para recuperar dados da coluna especificada.

(Herdado de DbDataReader)
GetString(Int32)

Obtém o valor da coluna especificada como uma cadeia de caracteres.

GetTextReader(Int32)

Obtém um leitor de texto para recuperar dados da coluna.

(Herdado de DbDataReader)
GetTimeSpan(Int32)

Obtém o valor da coluna especificada como um System.TimeSpan.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetValue(Int32)

Obtém o valor da coluna no ordinal especificado em seu formato nativo.

GetValues(Object[])

Popula uma matriz de objetos com os valores da coluna da linha atual.

InitializeLifetimeService()
Obsoleto.

Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância.

(Herdado de MarshalByRefObject)
IsDBNull(Int32)

Obtém um valor que indica se a coluna contém valores ausentes ou inexistente.

IsDBNullAsync(Int32, CancellationToken)

Obtém, de maneira assíncrona, um valor que indica se a coluna contém valores ausentes ou inexistente.

(Herdado de DbDataReader)
IsDBNullAsync(Int32)

Obtém, de maneira assíncrona, um valor que indica se a coluna contém valores ausentes ou inexistente.

(Herdado de DbDataReader)
MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto MarshalByRefObject atual.

(Herdado de MarshalByRefObject)
NextResult()

Avança o OracleDataReader para o próximo resultado.

NextResultAsync()

Avança de maneira assíncrona o leitor para o resultado seguinte ao ler os resultados de um lote de instruções.

(Herdado de DbDataReader)
NextResultAsync(CancellationToken)

Avança de maneira assíncrona o leitor para o resultado seguinte ao ler os resultados de um lote de instruções.

(Herdado de DbDataReader)
Read()

Avança o OracleDataReader para o próximo registro.

ReadAsync()

Avança de maneira assíncrona o leitor para o próximo registro em um conjunto de resultados.

(Herdado de DbDataReader)
ReadAsync(CancellationToken)

Avança de maneira assíncrona o leitor para o próximo registro em um conjunto de resultados.

(Herdado de DbDataReader)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)

Implantações explícitas de interface

IDataRecord.GetData(Int32)

Para obter uma descrição desse membro, confira GetData(Int32).

(Herdado de DbDataReader)
IEnumerable.GetEnumerator()

Retorna um enumerador que itera em uma coleção.

Métodos de Extensão

CanGetColumnSchema(DbDataReader)

Obtém um valor que indica se um DbDataReader pode obter um esquema de coluna.

GetColumnSchema(DbDataReader)

Obtém o esquema da coluna (coleção DbColumn) para um DbDataReader.

Cast<TResult>(IEnumerable)

Converte os elementos de um IEnumerable para o tipo especificado.

OfType<TResult>(IEnumerable)

Filtra os elementos de um IEnumerable com base em um tipo especificado.

AsParallel(IEnumerable)

Habilita a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable em um IQueryable.

Aplica-se a