OracleDataReader Classe

Definição

Fornece uma forma de ler um fluxo apenas direto de linhas de dados de uma fonte de dados. Esta 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 seguinte cria um OracleConnection, um OracleCommand, e um OracleDataReader. O exemplo lê os dados, escrevendo-os para a consola. Finalmente, o exemplo fecha o OracleDataReader, depois 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

Observações

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

Alterações feitas a um conjunto de resultados por outro processo ou thread enquanto os dados estão a ser lidos podem ser visíveis para o utilizador do OracleDataReader.

IsClosed e RecordsAffected são as únicas propriedades que pode chamar depois de o OracleDataReader fechar. Em alguns casos, tem de ligar Close antes de poder ligar RecordsAffected.

Mais do que um OracleDataReader pode estar aberto ao mesmo tempo.

Os dois exemplos Visual Basic seguintes demonstram como usar um OracleDataReader para recuperar um Oráculo REF CURSOR. Estes exemplos utilizam tabelas definidas no esquema Oracle Scott/Tiger e requerem o seguinte pacote PL/SQL e o corpo do pacote. Tem de criar estes no 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 de 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 Visual Basic exemplo executa um procedimento armazenado PL/SQL que devolve um parâmetro REF CURSOR 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 Visual Basic exemplo executa um procedimento armazenado PL/SQL que devolve dois parâmetros REF CURSOR 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 carrega-a com dados. Deve executar este exemplo antes de executar o exemplo seguinte, que demonstra o uso de um OracleDataReader para aceder aos 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 aceder a dados e utiliza 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

Name Description
Depth

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

FieldCount

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

HasRows

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

IsClosed

Indica se o OracleDataReader está fechado.

Item[Int32]

Obtém o valor da coluna especificada no seu formato nativo dado o ordinal da coluna.

Item[String]

Obtém o valor da coluna especificada no seu formato nativo, dado o nome da coluna.

RecordsAffected

Faz com que o número de linhas seja alterado, inserido ou eliminado pela execução da instrução SQL.

VisibleFieldCount

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

(Herdado de DbDataReader)

Métodos

Name Description
Close()

Fecha o OracleDataReader objeto.

CreateObjRef(Type)

Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto.

(Herdado de MarshalByRefObject)
Dispose()

Liberta os recursos que são usados por este objeto.

Dispose()

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

(Herdado de DbDataReader)
Dispose(Boolean)

Liberta os recursos não geridos usados pelo DbDataReader e opcionalmente liberta os recursos geridos.

(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 Booleano.

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 da coluna especificado para o buffer como um array, começando no deslocamento do buffer dado.

GetChar(Int32)

Obtém o valor da coluna especificada como um carácter.

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

Lê um fluxo de caracteres do deslocamento de coluna especificado para o buffer como um array, começando no deslocamento do buffer dado.

GetData(Int32)

Devolve um IDataReader para o ordinal da coluna especificado.

GetData(Int32)

Devolve 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 objeto DateTime .

GetDbDataReader(Int32)

Devolve um DbDataReader objeto para o ordinal da coluna solicitado que pode ser sobreposto com uma implementação específica do fornecedor.

(Herdado de DbDataReader)
GetDecimal(Int32)

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

GetDouble(Int32)

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

GetEnumerator()

Retorna e IEnumerator que pode ser usado para iterar pelas linhas no leitor de dados.

GetFieldType(Int32)

Obtém-se que Type é o tipo de dado do objeto.

GetFieldValue<T>(Int32)

Recebe o valor da coluna especificada como o tipo solicitado.

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

Assíncrono, obtém o valor da coluna especificada como o tipo solicitado.

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

Assíncrono, obtém o valor da coluna especificada como o 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 identificador globalmente único (GUID).

GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetInt16(Int32)

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

GetInt32(Int32)

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

GetInt64(Int32)

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

GetLifetimeService()

Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso.

(Herdado de MarshalByRefObject)
GetName(Int32)

Obtém o nome da coluna especificada.

GetOracleBFile(Int32)

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

GetOracleBinary(Int32)

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

GetOracleDateTime(Int32)

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

GetOracleLob(Int32)

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

GetOracleMonthSpan(Int32)

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

GetOracleNumber(Int32)

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

GetOracleString(Int32)

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

GetOracleTimeSpan(Int32)

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

GetOracleValue(Int32)

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

GetOracleValues(Object[])

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

GetOrdinal(String)

Obtém o ordinal da coluna, dado o nome da coluna.

GetProviderSpecificFieldType(Int32)

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

GetProviderSpecificValue(Int32)

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

GetProviderSpecificValues(Object[])

Obtém um array de objetos que representam os valores específicos do fornecedor subjacente.

GetSchemaTable()

Devolve a DataTable que descreve os metadados da coluna do OracleDataReader.

GetStream(Int32)

Recebe um fluxo para recuperar dados da coluna especificada.

(Herdado de DbDataReader)
GetString(Int32)

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

GetTextReader(Int32)

Faz com que um leitor de texto recupere 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 no seu formato nativo.

GetValues(Object[])

Preenche um array de objetos com os valores das colunas da linha atual.

InitializeLifetimeService()

Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso.

(Herdado de MarshalByRefObject)
IsDBNull(Int32)

Recebe um valor que indica se a coluna contém valores inexistentes ou em falta.

IsDBNullAsync(Int32, CancellationToken)

De forma assíncrona, obtém um valor que indica se a coluna contém valores inexistentes ou em falta.

(Herdado de DbDataReader)
IsDBNullAsync(Int32)

De forma assíncrona, obtém um valor que indica se a coluna contém valores inexistentes ou em falta.

(Herdado de DbDataReader)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
MemberwiseClone(Boolean)

Cria uma cópia superficial do objeto atual MarshalByRefObject .

(Herdado de MarshalByRefObject)
NextResult()

Avança para OracleDataReader o próximo resultado.

NextResultAsync()

De forma assíncrona, avança o leitor para o resultado seguinte ao ler os resultados de um conjunto de instruções.

(Herdado de DbDataReader)
NextResultAsync(CancellationToken)

De forma assíncrona, avança o leitor para o resultado seguinte ao ler os resultados de um conjunto de instruções.

(Herdado de DbDataReader)
Read()

Avança OracleDataReader para o próximo disco.

ReadAsync()

De forma assíncrona, avança o leitor para o registo seguinte num conjunto de resultados.

(Herdado de DbDataReader)
ReadAsync(CancellationToken)

De forma assíncrona, avança o leitor para o registo seguinte num conjunto de resultados.

(Herdado de DbDataReader)
ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)

Implementações de Interface Explícita

Name Description
IDataRecord.GetData(Int32)

Para uma descrição deste elemento, veja GetData(Int32).

(Herdado de DbDataReader)
IEnumerable.GetEnumerator()

Devolve um enumerador que itera numa coleção.

Métodos da Extensão

Name Description
AsParallel(IEnumerable)

Permite a paralelização de uma consulta.

AsQueryable(IEnumerable)

Converte um IEnumerable para um IQueryable.

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Conjura os elementos de an IEnumerable para o tipo especificado.

GetColumnSchema(DbDataReader)

Obtém o esquema de colunas (DbColumn coleção) para um DbDataReader.

OfType<TResult>(IEnumerable)

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

Aplica-se a