OracleDataReader Clase

Definición

Proporciona una manera de leer un flujo de solo avance de filas de datos 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 un OracleConnection, un OracleCommandy un 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.

IsClosedy RecordsAffected son las únicas propiedades a las que se puede llamar después de cerrar .OracleDataReader En algunos casos, debe llamar Close a para poder llamar a RecordsAffected.

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

Los dos ejemplos de Visual Basic siguientes muestran cómo usar un para recuperar una > de Oracle

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;
/

Este Visual Basic ejemplo ejecuta un procedimiento almacenado PL/SQL que devuelve un parámetro /> .

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 parámetros de REF CURSOR y lee los valores mediante un 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 acceder 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

Nombre Description
Depth

Obtiene un valor que indica la profundidad del 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 según el ordinal de columna.

Item[String]

Obtiene el valor de la columna especificada en su formato nativo según el nombre de columna.

RecordsAffected

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

VisibleFieldCount

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

(Heredado de DbDataReader)

Métodos

Nombre Description
Close()

Cierra el OracleDataReader objeto .

CreateObjRef(Type)

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

(Heredado de MarshalByRefObject)
Dispose()

Libera los recursos que usa este objeto.

Dispose()

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

(Heredado de DbDataReader)
Dispose(Boolean)

Libera los recursos no administrados utilizados por DbDataReader y, opcionalmente, libera los recursos administrados.

(Heredado de DbDataReader)
Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
GetBoolean(Int32)

Obtiene el valor de la columna especificada como booleano.

GetByte(Int32)

Obtiene el valor de la columna especificada como un byte.

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

Lee un flujo de bytes del desplazamiento de columna especificado en el búfer como una matriz, empezando por el desplazamiento del búfer especificado.

GetChar(Int32)

Obtiene el valor de la columna especificada como 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, empezando por el desplazamiento del búfer especificado.

GetData(Int32)

Devuelve un IDataReader para el ordinal de columna especificado.

GetData(Int32)

Devuelve un lector de datos anidado 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 DateTime objeto .

GetDbDataReader(Int32)

Devuelve un DbDataReader objeto para el ordinal de columna solicitado que se puede invalidar con una implementación específica del proveedor.

(Heredado de DbDataReader)
GetDecimal(Int32)

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

GetDouble(Int32)

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

GetEnumerator()

Devuelve un IEnumerator que se puede usar para recorrer en iteración las filas del lector de datos.

GetFieldType(Int32)

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

GetFieldValue<T>(Int32)

Obtiene el valor de la columna especificada como tipo solicitado.

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

Obtiene de forma asincrónica el valor de la columna especificada como tipo solicitado.

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

Obtiene de forma asincrónica el valor de la columna especificada como 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 único global (GUID).

GetHashCode()

Actúa 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 de 32 bits con signo.

GetInt64(Int32)

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

GetLifetimeService()

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 un OracleBFile objeto .

GetOracleBinary(Int32)

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

GetOracleDateTime(Int32)

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

GetOracleLob(Int32)

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

GetOracleMonthSpan(Int32)

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

GetOracleNumber(Int32)

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

GetOracleString(Int32)

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

GetOracleTimeSpan(Int32)

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

GetOracleValue(Int32)

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

GetOracleValues(Object[])

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

GetOrdinal(String)

Obtiene el ordinal de columna, dado el nombre de la columna.

GetProviderSpecificFieldType(Int32)

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

GetProviderSpecificValue(Int32)

Obtiene un que Object 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 subyacente.

GetSchemaTable()

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

GetStream(Int32)

Obtiene una secuencia 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 .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()

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 inexistentes o que faltan.

IsDBNullAsync(Int32, CancellationToken)

Obtiene de forma asincrónica un valor que indica si la columna contiene valores inexistentes o que faltan.

(Heredado de DbDataReader)
IsDBNullAsync(Int32)

Obtiene de forma asincrónica un valor que indica si la columna contiene valores inexistentes o que faltan.

(Heredado de DbDataReader)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto actual MarshalByRefObject .

(Heredado de MarshalByRefObject)
NextResult()

Avanza hasta OracleDataReader el siguiente resultado.

NextResultAsync()

Avanza de forma asincrónica el lector al siguiente resultado al leer los resultados de un lote de instrucciones.

(Heredado de DbDataReader)
NextResultAsync(CancellationToken)

Avanza de forma asincrónica el lector al siguiente resultado al leer los resultados de un lote de instrucciones.

(Heredado de DbDataReader)
Read()

Avanza hasta OracleDataReader el siguiente registro.

ReadAsync()

Avanza de forma asincrónica el lector al siguiente registro de un conjunto de resultados.

(Heredado de DbDataReader)
ReadAsync(CancellationToken)

Avanza de forma asincrónica el lector al 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

Nombre Description
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

Nombre Description
AsParallel(IEnumerable)

Habilita la paralelización de una consulta.

AsQueryable(IEnumerable)

Convierte un IEnumerable en un IQueryable.

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Convierte los elementos de un IEnumerable al tipo especificado.

GetColumnSchema(DbDataReader)

Obtiene el esquema de columna (DbColumn colección) de un DbDataReaderobjeto .

OfType<TResult>(IEnumerable)

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

Se aplica a