Comparteix a través de


OracleDataReader Clase

Definición

Proporciona el modo de lectura de una secuencia de filas de datos de tipo sólo avance de un origen de datos. Esta clase no puede heredarse.

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
Herencia
OracleDataReader
Herencia
Implementaciones

Ejemplos

En el ejemplo siguiente se crea , OracleConnectiony OracleCommand.OracleDataReader En el ejemplo se leen los datos y se escribe en la consola. Por último, el ejemplo cierra yOracleDataReader, a continuación, .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

Comentarios

Para crear un OracleDataReader, debe llamar al ExecuteReader método del OracleCommand objeto, en lugar de usar directamente un constructor.

Los cambios realizados en un conjunto de resultados por otro proceso o subproceso mientras se leen los datos pueden ser visibles para el usuario de OracleDataReader.

IsClosed y RecordsAffected son las únicas propiedades a las que se puede llamar una vez cerrada la OracleDataReader. En algunos casos, debe llamar a Close para poder llamar a RecordsAffected.

Se puede abrir más de una OracleDataReader en un momento dado.

En los dos ejemplos siguientes de Visual Basic se muestra cómo usar para OracleDataReader recuperar un objeto de Oracle REF CURSOR. Estos ejemplos usan tablas que se definen en el esquema Oracle Scott/Tiger y requieren el siguiente paquete PL/SQL y el cuerpo del paquete. Debe crearlos en el servidor para usar los ejemplos.

Cree el siguiente paquete de Oracle en el servidor de 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;  
/  

Cree el siguiente cuerpo del paquete de Oracle en el 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;  
/  

En este ejemplo de Visual Basic se ejecuta un procedimiento almacenado PL/SQL que devuelve un REF CURSOR parámetro y se lee el valor como .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  

En este ejemplo de Visual Basic se ejecuta un procedimiento almacenado PL/SQL que devuelve dos REF CURSOR parámetros y se leen los valores mediante .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  

En este ejemplo de C# se crea una tabla de Oracle y se carga con datos. Debe ejecutar este ejemplo antes de ejecutar el ejemplo siguiente, que muestra el uso de para OracleDataReader tener acceso a los datos mediante estructuras 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();  
   }  
}  

En este ejemplo de C# se usa para OracleDataReader acceder a los datos y se usan varias OracleType estructuras para mostrar los datos.

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

Propiedades

Depth

Obtiene un valor que indica la profundidad de anidamiento de la fila actual.

FieldCount

Obtiene el número de columnas de la fila actual.

HasRows

Obtiene un valor que indica si OracleDataReader contiene una o varias filas.

IsClosed

Indica si OracleDataReader está cerrado.

Item[Int32]

Obtiene el valor de la columna especificada en su formato nativo si se da el índice de columna.

Item[String]

Obtiene el valor de la columna especificada en su formato nativo si se da el nombre de la columna.

RecordsAffected

Obtiene el número de filas cambiadas, insertadas o eliminadas mediante la ejecución de la instrucción SQL.

VisibleFieldCount

Obtiene el número de campos de DbDataReader que no están ocultos.

(Heredado de DbDataReader)

Métodos

Close()

Cierra el objeto OracleDataReader.

CloseAsync()

Cierra de forma asincrónica el objeto DbDataReader.

(Heredado de DbDataReader)
CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.

(Heredado de MarshalByRefObject)
Dispose()

Libera los recursos utilizados por este objeto.

Dispose()

Libera todos los recursos usados por la instancia actual de la clase DbDataReader.

(Heredado de DbDataReader)
Dispose(Boolean)

Libera los recursos no administrados que usa DbDataReader y, de forma opcional, libera los recursos administrados.

(Heredado de DbDataReader)
DisposeAsync()

Libera de forma asincrónica todos los recursos que usa la instancia actual de la clase DbDataReader.

(Heredado de DbDataReader)
Equals(Object)

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GetBoolean(Int32)

Obtiene el valor de la columna especificada como tipo Boolean.

GetByte(Int32)

Obtiene el valor de la columna especificada como un byte.

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

Lee una secuencia de bytes del desplazamiento de columna especificado en el búfer como una matriz, comenzando en el desplazamiento de búfer dado.

GetChar(Int32)

Obtiene el valor de la columna especificada como un carácter.

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

Lee una secuencia de caracteres del desplazamiento de columna especificado en el búfer como una matriz, comenzando en el desplazamiento de búfer dado.

GetColumnSchemaAsync(CancellationToken)

Esta es la versión asincrónica de GetColumnSchema(DbDataReader). Los proveedores lo deben reemplazar con una implementación apropiada. Opcionalmente, se puede respetar cancellationToken. La implementación predeterminada invoca la llamada sincrónica a GetColumnSchema(DbDataReader) y devuelve una tarea completada. La implementación predeterminada devolverá una tarea cancelada si se pasa un cancellationToken ya cancelado. Las excepciones producidas por GetColumnSchema(DbDataReader) se comunicarán mediante la propiedad Task Exception devuelta.

(Heredado de DbDataReader)
GetData(Int32)

Devuelve un IDataReader para el ordinal de columna especificado.

GetData(Int32)

Devuelve un lector de datos anidados para la columna solicitada.

(Heredado de DbDataReader)
GetDataTypeName(Int32)

Obtiene el nombre del tipo de datos de origen.

GetDateTime(Int32)

Obtiene el valor de la columna especificada como un objeto DateTime.

GetDbDataReader(Int32)

Devuelve un objeto DbDataReader para el índice de columna solicitado que puede ser invalidado con una implementación específica del proveedor.

(Heredado de DbDataReader)
GetDecimal(Int32)

Obtiene el valor de la columna especificada como un objeto Decimal.

GetDouble(Int32)

Obtiene el valor de la columna especificada como un número de punto flotante de doble precisión.

GetEnumerator()

Devuelve una interfaz IEnumerator que se puede utilizar para recorrer en iteración las filas en el lector de datos.

GetFieldType(Int32)

Obtiene el objeto Type que es el tipo de datos del objeto.

GetFieldValue<T>(Int32)

Obtiene el valor de la columna especificada con el tipo solicitado.

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

Obtiene de manera asincrónica el valor de la columna especificada con el tipo solicitado.

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

Obtiene de manera asincrónica el valor de la columna especificada con el tipo solicitado.

(Heredado de DbDataReader)
GetFloat(Int32)

Obtiene el valor de la columna especificada como un número de punto flotante de precisión sencilla.

GetGuid(Int32)

Obtiene el valor de la columna especificada como un identificador global único (GUID).

GetHashCode()

Sirve como la función hash predeterminada.

(Heredado de Object)
GetInt16(Int32)

Obtiene el valor de la columna especificada como un entero de 16 bits con signo.

GetInt32(Int32)

Obtiene el valor de la columna especificada como un entero con signo de 32 bits.

GetInt64(Int32)

Obtiene el valor de la columna especificada como un entero de 64 bits con signo.

GetLifetimeService()
Obsoletos.

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
GetName(Int32)

Obtiene el nombre de la columna especificada.

GetOracleBFile(Int32)

Obtiene el valor de la columna especificada como objeto OracleBFile.

GetOracleBinary(Int32)

Obtiene el valor de la columna especificada como objeto OracleBinary.

GetOracleDateTime(Int32)

Obtiene el valor de la columna especificada como objeto OracleDateTime.

GetOracleLob(Int32)

Obtiene el valor de la columna especificada como objeto OracleLob.

GetOracleMonthSpan(Int32)

Obtiene el valor de la columna especificada como objeto OracleMonthSpan.

GetOracleNumber(Int32)

Obtiene el valor de la columna especificada como objeto OracleNumber.

GetOracleString(Int32)

Obtiene el valor de la columna especificada como objeto OracleString.

GetOracleTimeSpan(Int32)

Obtiene el valor de la columna especificada como objeto OracleTimeSpan.

GetOracleValue(Int32)

Obtiene el valor de la columna en el ordinal especificado en su formato de Oracle.

GetOracleValues(Object[])

Obtiene todas las columnas de atributos de la fila actual en el formato de Oracle.

GetOrdinal(String)

Obtiene el índice de columna a partir del nombre de la columna determinado.

GetProviderSpecificFieldType(Int32)

Obtiene un Object que es una representación del tipo de campo específico del proveedor subyacente.

GetProviderSpecificValue(Int32)

Obtiene un Object que es una representación del tipo de campo específico del proveedor subyacente.

GetProviderSpecificValues(Object[])

Obtiene una matriz de objetos que son una representación de los valores específicos del proveedor subyacentes.

GetSchemaTable()

Devuelve un objeto DataTable que describe los metadatos de columna de OracleDataReader.

GetSchemaTableAsync(CancellationToken)

Esta es la versión asincrónica de GetSchemaTable(). Los proveedores lo deben reemplazar con una implementación apropiada. Opcionalmente, se puede respetar cancellationToken. La implementación predeterminada invoca la llamada sincrónica a GetSchemaTable() y devuelve una tarea completada. La implementación predeterminada devolverá una tarea cancelada si se pasa un cancellationToken ya cancelado. Las excepciones producidas por GetSchemaTable() se comunicarán mediante la propiedad Task Exception devuelta.

(Heredado de DbDataReader)
GetStream(Int32)

Obtiene un flujo para recuperar datos de la columna especificada.

(Heredado de DbDataReader)
GetString(Int32)

Obtiene el valor de la columna especificada como una cadena.

GetTextReader(Int32)

Obtiene un lector de texto para recuperar datos de la columna.

(Heredado de DbDataReader)
GetTimeSpan(Int32)

Obtiene el valor de la columna especificada como objeto System.TimeSpan.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
GetValue(Int32)

Obtiene el valor de la columna en el ordinal especificado en su formato nativo.

GetValues(Object[])

Rellena una matriz de objetos con los valores de columna de la fila actual.

InitializeLifetimeService()
Obsoletos.

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.

(Heredado de MarshalByRefObject)
IsDBNull(Int32)

Obtiene un valor que indica si la columna contiene valores no existentes o que faltan.

IsDBNullAsync(Int32, CancellationToken)

Obtiene de manera asincrónica un valor que indica si la columna contiene valores no existentes o que faltan.

(Heredado de DbDataReader)
IsDBNullAsync(Int32)

Obtiene de manera asincrónica un valor que indica si la columna contiene valores no existentes o que faltan.

(Heredado de DbDataReader)
MemberwiseClone()

Crea una copia superficial del Object actual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.

(Heredado de MarshalByRefObject)
NextResult()

Desplaza OracleDataReader al resultado siguiente.

NextResultAsync()

Hace avanzar de manera asincrónica el lector hasta el resultado siguiente cuando se leen los resultados de un lote de instrucciones.

(Heredado de DbDataReader)
NextResultAsync(CancellationToken)

Hace avanzar de manera asincrónica el lector hasta el resultado siguiente cuando se leen los resultados de un lote de instrucciones.

(Heredado de DbDataReader)
Read()

Desplaza OracleDataReader al siguiente registro.

ReadAsync()

Hace avanzar de manera asincrónica el lector hasta el siguiente registro de un conjunto de resultados.

(Heredado de DbDataReader)
ReadAsync(CancellationToken)

Hace avanzar de manera asincrónica el lector hasta el siguiente registro de un conjunto de resultados.

(Heredado de DbDataReader)
ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)

Implementaciones de interfaz explícitas

IDataRecord.GetData(Int32)

Para obtener una descripción de este miembro, vea GetData(Int32).

(Heredado de DbDataReader)
IEnumerable.GetEnumerator()

Devuelve un enumerador que recorre en iteración una colección.

Métodos de extensión

CanGetColumnSchema(DbDataReader)

Obtiene un valor que indica si DbDataReader puede obtener un esquema de columna.

GetColumnSchema(DbDataReader)

Obtiene el esquema de columna (colección DbColumn) para DbDataReader.

Cast<TResult>(IEnumerable)

Convierte los elementos de IEnumerable en el tipo especificado.

OfType<TResult>(IEnumerable)

Filtra los elementos de IEnumerable en función de un tipo especificado.

AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte una interfaz IEnumerable en IQueryable.

Se aplica a