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.Provides a way of reading a forward-only stream of data rows from a data source. Esta clase no puede heredarse.This class cannot be inherited.

public ref class OracleDataReader sealed : System::Data::Common::DbDataReader
public sealed class OracleDataReader : System.Data.Common.DbDataReader
type OracleDataReader = class
    inherit DbDataReader
Public NotInheritable Class OracleDataReader
Inherits DbDataReader
Herencia
OracleDataReader

Ejemplos

En el ejemplo siguiente se crea un OracleConnection, un OracleCommand y un OracleDataReader.The following example creates an OracleConnection, an OracleCommand, and an OracleDataReader. En el ejemplo se leen los datos y se escriben en la consola.The example reads through the data, writing it out to the console. Finalmente, el ejemplo cierra el OracleDataReader y, a continuación, el OracleConnection.Finally, the example closes the OracleDataReader, then the 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 método ExecuteReader del objeto OracleCommand, en lugar de usar directamente un constructor.To create an OracleDataReader, you must call the ExecuteReader method of the OracleCommand object, rather than directly using a 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 del OracleDataReader.Changes made to a resultset by another process or thread while data is being read may be visible to the user of the OracleDataReader.

IsClosed y RecordsAffected son las únicas propiedades a las que se puede llamar después de cerrarse el @no__t 2.IsClosed and RecordsAffected are the only properties that you can call after the OracleDataReader is closed. En algunos casos, debe llamar a Close para poder llamar a RecordsAffected.In some cases, you must call Close before you can call RecordsAffected.

Puede haber más de un OracleDataReader abierto en un momento dado.More than one OracleDataReader can be open at any given time.

En los dos ejemplos de Visual Basic siguientes se muestra cómo usar un OracleDataReader para recuperar una @no__t de Oracle-1.The following two Visual Basic examples demonstrate how to use an OracleDataReader to retrieve an Oracle REF CURSOR. En estos ejemplos se usan tablas definidas en el esquema Scott/Tiger de Oracle y se requiere el siguiente paquete PL/SQL y cuerpo del paquete.These examples use tables that are defined in the Oracle Scott/Tiger schema, and require the following PL/SQL package and package body. Debe crearlos en el servidor para usar los ejemplos.You must create these on your server to use the examples.

Cree el siguiente paquete de Oracle en el servidor de Oracle.Create the following Oracle package on the Oracle server.

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 the following Oracle package body on the Oracle server.

  
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 Visual Basic ejemplo se ejecuta un procedimiento almacenado PL/SQL que devuelve un parámetro REF CURSOR y lee el valor como OracleDataReader.This Visual Basic example executes a PL/SQL stored procedure that returns a REF CURSOR parameter, and reads the value as an 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 Visual Basic ejemplo se ejecuta un procedimiento almacenado PL/SQL que devuelve dos parámetros REF CURSOR y Lee los valores mediante un OracleDataReader.This Visual Basic example executes a PL/SQL stored procedure that returns two REF CURSOR parameters, and reads the values using an 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 C# este ejemplo se crea una tabla de Oracle y se carga con datos.This C# example creates an Oracle table and loads it with data. Debe ejecutar este ejemplo antes de ejecutar el ejemplo siguiente, que muestra el uso de un OracleDataReader para tener acceso a los datos mediante estructuras OracleType.You must run this example prior to running the subsequent example, which demonstrates using an OracleDataReader to access the data using OracleType structures.

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 C# este ejemplo se usa un OracleDataReader para tener acceso a los datos y se usan varias estructuras OracleType para mostrar los datos.This C# example uses an OracleDataReader to access data, and uses several OracleType structures to display the data.

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.Gets a value indicating the depth of nesting for the current row.

FieldCount

Obtiene el número de columnas de la fila actual.Gets the number of columns in the current row.

HasRows

Obtiene un valor que indica si OracleDataReader contiene una o varias filas.Gets a value indicating whether the OracleDataReader contains one or more rows.

IsClosed

Indica si OracleDataReader está cerrado.Indicates whether the OracleDataReader is closed.

Item[Int32]

Obtiene el valor de la columna especificada en su formato nativo si se da el índice de columna.Gets the value of the specified column in its native format given the column ordinal.

Item[String]

Obtiene el valor de la columna especificada en su formato nativo si se da el nombre de la columna.Gets the value of the specified column in its native format given the column name.

RecordsAffected

Obtiene el número de filas cambiadas, insertadas o eliminadas mediante la ejecución de la instrucción SQL.Gets the number of rows changed, inserted, or deleted by execution of the SQL statement.

Métodos

Close()

Cierra el objeto OracleDataReader.Closes the OracleDataReader object.

CreateObjRef(Type)

Crea un objeto que contiene toda la información relevante necesaria para generar un proxy utilizado para comunicarse con un objeto remoto.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Heredado de MarshalByRefObject)
Dispose()

Libera los recursos utilizados por este objeto.Releases the resources that are used by this object.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.Determines whether the specified object is equal to the current object.

(Heredado de Object)
GetBoolean(Int32)

Obtiene el valor de la columna especificada como tipo Boolean.Gets the value of the specified column as a Boolean.

GetByte(Int32)

Obtiene el valor de la columna especificada como un byte.Gets the value of the specified column as a 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.Reads a stream of bytes from the specified column offset into the buffer as an array, starting at the given buffer offset.

GetChar(Int32)

Obtiene el valor de la columna especificada como un carácter.Gets the value of the specified column as a character.

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.Reads a stream of characters from the specified column offset into the buffer as an array, starting at the given buffer offset.

GetData(Int32)

Devuelve un IDataReader para el ordinal de columna especificado.Returns an IDataReader for the specified column ordinal.

GetDataTypeName(Int32)

Obtiene el nombre del tipo de datos de origen.Gets the name of the source data type.

GetDateTime(Int32)

Obtiene el valor de la columna especificada como un objeto DateTime.Gets the value of the specified column as a DateTime object.

GetDecimal(Int32)

Obtiene el valor de la columna especificada como un objeto Decimal.Gets the value of the specified column as a Decimal object.

GetDouble(Int32)

Obtiene el valor de la columna especificada como un número de punto flotante de precisión doble.Gets the value of the specified column as a double-precision floating point number.

GetEnumerator()

Devuelve una interfaz IEnumerator que se puede utilizar para recorrer en iteración las filas en el lector de datos.Returns an IEnumerator that can be used to iterate through the rows in the data reader.

GetFieldType(Int32)

Obtiene el objeto Type que es el tipo de datos del objeto.Gets the Type that is the data type of the object.

GetFloat(Int32)

Obtiene el valor de la columna especificada como un número de punto flotante de precisión sencilla.Gets the value of the specified column as a single-precision floating-point number.

GetGuid(Int32)

Obtiene el valor de la columna especificada como un identificador global único (GUID).Gets the value of the specified column as a globally-unique identifier (GUID).

GetHashCode()

Sirve como función hash predeterminada.Serves as the default hash function.

(Heredado de Object)
GetInt16(Int32)

Obtiene el valor de la columna especificada como un entero de 16 bits con signo.Gets the value of the specified column as a 16-bit signed integer.

GetInt32(Int32)

Obtiene el valor de la columna especificada como un entero con signo de 32 bits.Gets the value of the specified column as a 32-bit signed integer.

GetInt64(Int32)

Obtiene el valor de la columna especificada como un entero de 64 bits con signo.Gets the value of the specified column as a 64-bit signed integer.

GetLifetimeService()

Recupera el objeto de servicio de duración actual que controla la directiva de duración de esta instancia.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
GetName(Int32)

Obtiene el nombre de la columna especificada.Gets the name of the specified column.

GetOracleBFile(Int32)

Obtiene el valor de la columna especificada como objeto OracleBFile.Gets the value of the specified column as an OracleBFile object.

GetOracleBinary(Int32)

Obtiene el valor de la columna especificada como objeto OracleBinary.Gets the value of the specified column as an OracleBinary object.

GetOracleDateTime(Int32)

Obtiene el valor de la columna especificada como objeto OracleDateTime.Gets the value of the specified column as an OracleDateTime object.

GetOracleLob(Int32)

Obtiene el valor de la columna especificada como objeto OracleLob.Gets the value of the specified column as an OracleLob object.

GetOracleMonthSpan(Int32)

Obtiene el valor de la columna especificada como objeto OracleMonthSpan.Gets the value of the specified column as an OracleMonthSpan object.

GetOracleNumber(Int32)

Obtiene el valor de la columna especificada como objeto OracleNumber.Gets the value of the specified column as an OracleNumber object.

GetOracleString(Int32)

Obtiene el valor de la columna especificada como objeto OracleString.Gets the value of the specified column as an OracleString object.

GetOracleTimeSpan(Int32)

Obtiene el valor de la columna especificada como objeto OracleTimeSpan.Gets the value of the specified column as an OracleTimeSpan object.

GetOracleValue(Int32)

Obtiene el valor de la columna en el ordinal especificado en su formato de Oracle.Gets the value of the column at the specified ordinal in its Oracle format.

GetOracleValues(Object[])

Obtiene todas las columnas de atributos de la fila actual en el formato de Oracle.Gets all the attribute columns in the current row in Oracle format.

GetOrdinal(String)

Obtiene el índice de columna a partir del nombre de la columna determinado.Gets the column ordinal, given the name of the column.

GetProviderSpecificFieldType(Int32)

Obtiene un Object que es una representación del tipo de campo específico del proveedor subyacente.Gets an Object that is a representation of the underlying provider specific field type.

GetProviderSpecificValue(Int32)

Obtiene un Object que es una representación del tipo de campo específico del proveedor subyacente.Gets an Object that is a representation of the underlying provider specific field type.

GetProviderSpecificValues(Object[])

Obtiene una matriz de objetos que son una representación de los valores específicos del proveedor subyacentes.Gets an array of objects that are a representation of the underlying provider specific values.

GetSchemaTable()

Devuelve un objeto DataTable que describe los metadatos de columna de OracleDataReader.Returns a DataTable that describes the column metadata of the OracleDataReader.

GetString(Int32)

Obtiene el valor de la columna especificada como una cadena.Gets the value of the specified column as a string.

GetTimeSpan(Int32)

Obtiene el valor de la columna especificada como objeto System.TimeSpan.Gets the value of the specified column as a System.TimeSpan.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
GetValue(Int32)

Obtiene el valor de la columna en el ordinal especificado en su formato nativo.Gets the value of the column at the specified ordinal in its native format.

GetValues(Object[])

Rellena una matriz de objetos con los valores de columna de la fila actual.Populates an array of objects with the column values of the current row.

InitializeLifetimeService()

Obtiene un objeto de servicio de duración para controlar la directiva de duración de esta instancia.Obtains a lifetime service object to control the lifetime policy for this instance.

(Heredado de MarshalByRefObject)
IsDBNull(Int32)

Obtiene un valor que indica si la columna contiene valores no existentes o que faltan.Gets a value indicating whether the column contains non-existent or missing values.

MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
MemberwiseClone(Boolean)

Crea una copia superficial del objeto MarshalByRefObject actual.Creates a shallow copy of the current MarshalByRefObject object.

(Heredado de MarshalByRefObject)
NextResult()

Desplaza OracleDataReader al resultado siguiente.Advances the OracleDataReader to the next result.

Read()

Desplaza OracleDataReader al siguiente registro.Advances the OracleDataReader to the next record.

ToString()

Devuelve un valor de tipo string que representa el objeto actual.Returns a string that represents the current object.

(Heredado de Object)

Implementaciones de interfaz explícitas

IEnumerable.GetEnumerator()

Devuelve un enumerador que recorre en iteración una colección.Returns an enumerator that iterates through a collection.

Se aplica a