Condividi tramite


OracleDataReader Classe

Definizione

Fornisce un modo per leggere un flusso di righe di dati forward-only da un'origine dati. La classe non può essere ereditata.

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
Ereditarietà
OracleDataReader
Ereditarietà
Implementazioni

Esempio

Nell'esempio seguente viene creato un OracleConnectionoggetto , un OracleCommande un OracleDataReaderoggetto . L'esempio legge i dati, scrivendolo nella console. Infine, l'esempio chiude , OracleDataReaderquindi .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

Commenti

Per creare un OracleDataReaderoggetto , è necessario chiamare il ExecuteReader metodo dell'oggetto OracleCommand anziché usare direttamente un costruttore.

Le modifiche apportate a un set di risultati da un altro processo o thread durante la lettura dei dati possono essere visibili all'utente di OracleDataReader.

IsClosed e RecordsAffected sono le uniche proprietà che possono essere chiamate dopo la chiusura dell'oggetto OracleDataReader. In alcuni casi, è necessario chiamare prima di poter chiamare CloseRecordsAffected.

Più di uno OracleDataReader può essere aperto in qualsiasi momento.

I due esempi di Visual Basic seguenti illustrano come usare un OracleDataReader oggetto per recuperare un oggetto Oracle REF CURSOR. Questi esempi usano tabelle definite nello schema Oracle Scott/Tiger e richiedono il corpo del pacchetto PL/SQL seguente. È necessario crearli nel server per usare gli esempi.

Creare il seguente package Oracle sul server 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;  
/  

Creare il seguente corpo del package Oracle sul server 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;  
/  

Questo esempio di Visual Basic esegue una stored procedure PL/SQL che restituisce un REF CURSOR parametro e legge il valore come 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  

Questo esempio di Visual Basic esegue una stored procedure PL/SQL che restituisce due REF CURSOR parametri e legge i valori usando un OracleDataReaderoggetto .

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  

Questo esempio C# crea una tabella Oracle e la carica con i dati. È necessario eseguire questo esempio prima di eseguire l'esempio successivo, che illustra l'uso di un OracleDataReader oggetto per accedere ai dati usando le strutture 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();  
   }  
}  

Questo esempio C# usa un oggetto OracleDataReader per accedere ai dati e usa diverse OracleType strutture per visualizzare i dati.

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

Proprietà

Depth

Ottiene un valore che indica il livello di annidamento della riga corrente.

FieldCount

Ottiene il numero di colonne nella riga corrente.

HasRows

Ottiene un valore che indica se l'oggetto OracleDataReader contiene una o più righe.

IsClosed

Indica se la classe OracleDataReader è chiusa.

Item[Int32]

Ottiene il valore della colonna specificata nel formato nativo, data la posizione ordinale della colonna.

Item[String]

Ottiene il valore della colonna specificata nel formato nativo, dato il nome della colonna.

RecordsAffected

Ottiene il numero di righe modificate, inserite o eliminate dall'esecuzione dell'istruzione SQL.

VisibleFieldCount

Ottiene il numero di campi non nascosti in DbDataReader.

(Ereditato da DbDataReader)

Metodi

Close()

Chiude l'oggetto OracleDataReader.

CloseAsync()

Chiude in modo asincrono l'oggetto DbDataReader.

(Ereditato da DbDataReader)
CreateObjRef(Type)

Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto.

(Ereditato da MarshalByRefObject)
Dispose()

Rilascia le risorse utilizzate da questo oggetto.

Dispose()

Rilascia tutte le risorse usate dall'istanza corrente della classe DbDataReader.

(Ereditato da DbDataReader)
Dispose(Boolean)

Rilascia le risorse non gestite usate da DbDataReader e, facoltativamente, le risorse gestite.

(Ereditato da DbDataReader)
DisposeAsync()

Rilascia in modo asincrono le risorse usate dall'istanza corrente della classe DbDataReader.

(Ereditato da DbDataReader)
Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetBoolean(Int32)

Ottiene il valore della colonna specificata come valore Boolean.

GetByte(Int32)

Ottiene il valore della colonna specificata come byte.

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

Legge un flusso di byte dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato.

GetChar(Int32)

Ottiene il valore della colonna specificata sotto forma di carattere.

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

Legge un flusso di caratteri dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato.

GetColumnSchemaAsync(CancellationToken)

Si tratta della versione asincrona di GetColumnSchema(DbDataReader). I provider devono eseguire l'override con un'implementazione appropriata. cancellationToken può facoltativamente essere rispettato. L'implementazione predefinita richiama la chiamata sincrona GetColumnSchema(DbDataReader) e restituisce un'attività completata. L'implementazione predefinita restituirà un'attività annullata se viene passato un cancellationToken già annullato. Le eccezioni generate da GetColumnSchema(DbDataReader) verranno passate mediante la proprietà Task Exception restituita.

(Ereditato da DbDataReader)
GetData(Int32)

Restituisce IDataReader per l'ordinale di colonna specificato.

GetData(Int32)

Restituisce un lettore di dati annidati per la colonna richiesta.

(Ereditato da DbDataReader)
GetDataTypeName(Int32)

Ottiene il nome del tipo di dati di origine.

GetDateTime(Int32)

Ottiene il valore della colonna specificata come oggetto DateTime.

GetDbDataReader(Int32)

Restituisce un oggetto DbDataReader per l'ordinale di colonna richiesto, di cui è possibile eseguire l'override tramite un'implementazione specifica del provider.

(Ereditato da DbDataReader)
GetDecimal(Int32)

Ottiene il valore della colonna specificata come oggetto Decimal.

GetDouble(Int32)

Ottiene il valore della colonna specificata come numero a virgola mobile a precisione doppia.

GetEnumerator()

Restituisce un oggetto IEnumerator che può essere utilizzato per scorrere le righe nel lettore di dati.

GetFieldType(Int32)

Ottiene l'oggetto Type che rappresenta il tipo di dati dell'oggetto.

GetFieldValue<T>(Int32)

Ottiene il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFieldValueAsync<T>(Int32)

Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto.

(Ereditato da DbDataReader)
GetFloat(Int32)

Ottiene il valore della colonna specificata sotto forma di numero in virgola mobile e precisione singola.

GetGuid(Int32)

Ottiene il valore della colonna specificata come identificatore univoco globale (GUID).

GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetInt16(Int32)

Ottiene il valore della colonna specificata sotto forma di intero con segno a 16 bit.

GetInt32(Int32)

Ottiene il valore della colonna specificata come intero con segno a 32 bit.

GetInt64(Int32)

Ottiene il valore della colonna specificata come integer con segno a 64 bit.

GetLifetimeService()
Obsoleti.

Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza.

(Ereditato da MarshalByRefObject)
GetName(Int32)

Ottiene il nome della colonna specificata.

GetOracleBFile(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleBFile.

GetOracleBinary(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleBinary.

GetOracleDateTime(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleDateTime.

GetOracleLob(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleLob.

GetOracleMonthSpan(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleMonthSpan.

GetOracleNumber(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleNumber.

GetOracleString(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleString.

GetOracleTimeSpan(Int32)

Ottiene il valore della colonna specificata sotto forma di oggetto OracleTimeSpan.

GetOracleValue(Int32)

Ottiene il valore della colonna in corrispondenza dell'ordinale specificato nel formato Oracle.

GetOracleValues(Object[])

Ottiene tutte le colonne di attributo nella riga corrente in formato Oracle.

GetOrdinal(String)

Ottiene la posizione ordinale della colonna, dato il nome della colonna.

GetProviderSpecificFieldType(Int32)

Ottiene un oggetto Object che consiste in una rappresentazione del tipo di campo specifico del provider sottostante.

GetProviderSpecificValue(Int32)

Ottiene un oggetto Object che consiste in una rappresentazione del tipo di campo specifico del provider sottostante.

GetProviderSpecificValues(Object[])

Ottiene una matrice di oggetti che sono una rappresentazione dei valori specifici del provider sottostante.

GetSchemaTable()

Restituisce un oggetto DataTable che descrive i metadati della colonna di OracleDataReader.

GetSchemaTableAsync(CancellationToken)

Si tratta della versione asincrona di GetSchemaTable(). I provider devono eseguire l'override con un'implementazione appropriata. cancellationToken può facoltativamente essere rispettato. L'implementazione predefinita richiama la chiamata sincrona GetSchemaTable() e restituisce un'attività completata. L'implementazione predefinita restituirà un'attività annullata se viene passato un cancellationToken già annullato. Le eccezioni generate da GetSchemaTable() verranno passate mediante la proprietà Task Exception restituita.

(Ereditato da DbDataReader)
GetStream(Int32)

Ottiene un flusso per recuperare i dati dalla colonna specificata.

(Ereditato da DbDataReader)
GetString(Int32)

Ottiene il valore della colonna specificata sotto forma di stringa.

GetTextReader(Int32)

Ottiene un lettore di testo per recuperare i dati dalla colonna.

(Ereditato da DbDataReader)
GetTimeSpan(Int32)

Ottiene il valore della colonna specificata sotto forma di classe System.TimeSpan.

GetType()

Ottiene l'oggetto Type dell'istanza corrente.

(Ereditato da Object)
GetValue(Int32)

Ottiene il valore della colonna in corrispondenza dell'ordinale specificato nel formato nativo.

GetValues(Object[])

Popola una matrice di oggetti con i valori della colonna della riga corrente.

InitializeLifetimeService()
Obsoleti.

Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza.

(Ereditato da MarshalByRefObject)
IsDBNull(Int32)

Ottiene un valore che indica se la colonna contiene valori non esistenti o mancanti.

IsDBNullAsync(Int32, CancellationToken)

Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti.

(Ereditato da DbDataReader)
IsDBNullAsync(Int32)

Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti.

(Ereditato da DbDataReader)
MemberwiseClone()

Crea una copia superficiale dell'oggetto Object corrente.

(Ereditato da Object)
MemberwiseClone(Boolean)

Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente.

(Ereditato da MarshalByRefObject)
NextResult()

Sposta OracleDataReader al risultato successivo.

NextResultAsync()

Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni.

(Ereditato da DbDataReader)
NextResultAsync(CancellationToken)

Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni.

(Ereditato da DbDataReader)
Read()

Sposta l'oggetto OracleDataReader al record successivo.

ReadAsync()

Sposta in modo asincrono il lettore al record successivo in un set di risultati.

(Ereditato da DbDataReader)
ReadAsync(CancellationToken)

Sposta in modo asincrono il lettore al record successivo in un set di risultati.

(Ereditato da DbDataReader)
ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Implementazioni dell'interfaccia esplicita

IDataRecord.GetData(Int32)

Per una descrizione di questo membro, vedere GetData(Int32).

(Ereditato da DbDataReader)
IEnumerable.GetEnumerator()

Restituisce un enumeratore che consente di eseguire l'iterazione di una raccolta.

Metodi di estensione

CanGetColumnSchema(DbDataReader)

Ottiene un valore che indica se un oggetto DbDataReader può ottenere uno schema di colonna.

GetColumnSchema(DbDataReader)

Ottiene lo schema di colonne (raccolta DbColumn) per un oggetto DbDataReader.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato.

AsParallel(IEnumerable)

Consente la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un oggetto IEnumerable in un oggetto IQueryable.

Si applica a