OracleDataReader Classe

Définition

Fournit un moyen de lire un flux de lignes de données avant uniquement à partir d'une source de données. Cette classe ne peut pas être héritée.

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
Héritage
OracleDataReader
Héritage
Implémente

Exemples

L’exemple suivant crée un OracleConnection, un OracleCommandet un OracleDataReader. L’exemple lit les données et les écrit dans la console. Enfin, l’exemple ferme le OracleDataReader, puis le 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

Remarques

Pour créer un OracleDataReader, vous devez appeler la ExecuteReader méthode de l’objet OracleCommand , plutôt que d’utiliser directement un constructeur.

Les modifications apportées à un jeu de résultats par un autre processus ou thread pendant la lecture des données peuvent être visibles par l’utilisateur du OracleDataReader.

IsClosed et RecordsAffected sont les seules propriétés pouvant être appelées après la fermeture de l'élément OracleDataReader. Dans certains cas, vous devez appeler Close avant de pouvoir appeler RecordsAffected.

Plusieurs OracleDataReader peuvent être ouverts à tout moment.

Les deux exemples Visual Basic suivants montrent comment utiliser un OracleDataReader pour récupérer un Oracle REF CURSOR. Ces exemples utilisent des tables définies dans le schéma Oracle Scott/Tiger et nécessitent le package PL/SQL et le corps de package suivants. Vous devez les créer sur votre serveur pour utiliser les exemples.

Créez le package Oracle suivant sur le serveur 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;  
/  

Créez le corps du package Oracle suivant sur le serveur 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;  
/  

Cet exemple Visual Basic exécute une procédure stockée PL/SQL qui retourne un REF CURSOR paramètre et lit la valeur en tant que 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  

Cet exemple Visual Basic exécute une procédure stockée PL/SQL qui retourne deux REF CURSOR paramètres et lit les valeurs à l’aide d’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  

Cet exemple C# crée une table Oracle et la charge avec des données. Vous devez exécuter cet exemple avant d’exécuter l’exemple suivant, qui illustre l’utilisation d’un OracleDataReader pour accéder aux données à l’aide de structures 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();  
   }  
}  

Cet exemple C# utilise un OracleDataReader pour accéder aux données et utilise plusieurs OracleType structures pour afficher les données.

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

Propriétés

Depth

Obtient une valeur indiquant la profondeur d'imbrication de la ligne actuelle.

FieldCount

Obtient le nombre de colonnes figurant dans la ligne actuelle.

HasRows

Obtient une valeur indiquant si OracleDataReader contient une ou plusieurs lignes.

IsClosed

Indique si OracleDataReader est fermé.

Item[Int32]

Obtient la valeur de la colonne spécifiée dans son format natif en fonction du numéro de la colonne.

Item[String]

Obtient la valeur de la colonne spécifiée dans son format natif en fonction du nom de la colonne.

RecordsAffected

Obtient le nombre de lignes modifiées, insérées ou supprimées par l'exécution de l'instruction SQL.

VisibleFieldCount

Obtient le nombre de champs dans DbDataReader qui ne sont pas masqués.

(Hérité de DbDataReader)

Méthodes

Close()

Ferme l'objet OracleDataReader.

CloseAsync()

Ferme de façon asynchrone l’objet DbDataReader.

(Hérité de DbDataReader)
CreateObjRef(Type)

Crée un objet contenant toutes les informations appropriées requises pour générer un proxy permettant de communiquer avec un objet distant.

(Hérité de MarshalByRefObject)
Dispose()

Libère les ressources utilisées par cet objet.

Dispose()

Libère toutes les ressources utilisées par l'instance actuelle de la classe DbDataReader.

(Hérité de DbDataReader)
Dispose(Boolean)

Libère les ressources non managées utilisées par DbDataReader et libère éventuellement les ressources managées.

(Hérité de DbDataReader)
DisposeAsync()

Libère de façon asynchrone toutes les ressources utilisées par l’instance actuelle de la classe DbDataReader.

(Hérité de DbDataReader)
Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetBoolean(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'une valeur Boolean.

GetByte(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un octet.

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

Lit un flux d’octets à partir de l’offset de colonne spécifié dans la mémoire tampon comme un tableau, en commençant à l’offset de mémoire tampon donné.

GetChar(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un caractère.

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

Lit un flux de caractères à partir de l’offset de colonne spécifié dans la mémoire tampon comme un tableau, en commençant à l’offset de mémoire tampon donné.

GetColumnSchemaAsync(CancellationToken)

Il s'agit de la version asynchrone de GetColumnSchema(DbDataReader). Les fournisseurs doivent effectuer le remplacement avec une implémentation appropriée. Le cancellationToken peut éventuellement être respecté. L'implémentation par défaut appelle l'appel de méthode GetColumnSchema(DbDataReader) synchrone et retourne une tâche terminée. L'implémentation par défaut retourne une tâche annulée si un cancellationToken déjà annulé est passé. Les exceptions levées par GetColumnSchema(DbDataReader) sont communiquées via la propriété d'exception de tâche retournée.

(Hérité de DbDataReader)
GetData(Int32)

Retourne un IDataReader pour le numéro de colonne spécifié.

GetData(Int32)

Retourne un lecteur de données imbriqué pour la colonne demandée.

(Hérité de DbDataReader)
GetDataTypeName(Int32)

Obtient le nom du type de données source.

GetDateTime(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet DateTime.

GetDbDataReader(Int32)

Retourne un objet DbDataReader pour l'ordinal de colonne demandé qui peut être substitué par une implémentation spécifique au fournisseur.

(Hérité de DbDataReader)
GetDecimal(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet Decimal.

GetDouble(Int32)

Obtient la valeur de la colonne spécifiée sous forme de nombre à virgule flottante double précision.

GetEnumerator()

Retourne un objet IEnumerator qui peut être utilisé pour itérer au sein des lignes dans le lecteur de données.

GetFieldType(Int32)

Obtient le Type qui correspond au type de données de l'objet.

GetFieldValue<T>(Int32)

Obtient la valeur de la colonne spécifiée comme type demandé.

(Hérité de DbDataReader)
GetFieldValueAsync<T>(Int32)

Obtient de manière asynchrone la valeur de la colonne spécifiée comme type demandé.

(Hérité de DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Obtient de manière asynchrone la valeur de la colonne spécifiée comme type demandé.

(Hérité de DbDataReader)
GetFloat(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un nombre à virgule flottante simple précision.

GetGuid(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un identificateur global unique (GUID, Globally Unique IDentifier).

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetInt16(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un entier signé 16 bits.

GetInt32(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d’un entier signé 32 bits.

GetInt64(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un entier signé 64 bits.

GetLifetimeService()
Obsolète.

Récupère l'objet de service de durée de vie en cours qui contrôle la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
GetName(Int32)

Obtient le nom de la colonne spécifiée.

GetOracleBFile(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleBFile.

GetOracleBinary(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleBinary.

GetOracleDateTime(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleDateTime.

GetOracleLob(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleLob.

GetOracleMonthSpan(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleMonthSpan.

GetOracleNumber(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleNumber.

GetOracleString(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleString.

GetOracleTimeSpan(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un objet OracleTimeSpan.

GetOracleValue(Int32)

Obtient la valeur de la colonne au numéro spécifié dans son format Oracle.

GetOracleValues(Object[])

Obtient toutes les colonnes d'attributs figurant dans la ligne actuelle au format Oracle.

GetOrdinal(String)

Obtient le numéro de la colonne, en fonction du nom de la colonne.

GetProviderSpecificFieldType(Int32)

Obtient un Object qui est une représentation du type de champ spécifique au fournisseur sous-jacent.

GetProviderSpecificValue(Int32)

Obtient un Object qui est une représentation du type de champ spécifique au fournisseur sous-jacent.

GetProviderSpecificValues(Object[])

Obtient un tableau d'objets qui constituent une représentation des valeurs sous-jacentes spécifiques au fournisseur.

GetSchemaTable()

Retourne un DataTable qui décrit les métadonnées de colonne d'OracleDataReader.

GetSchemaTableAsync(CancellationToken)

Il s'agit de la version asynchrone de GetSchemaTable(). Les fournisseurs doivent effectuer le remplacement avec une implémentation appropriée. Le cancellationToken peut éventuellement être respecté. L'implémentation par défaut appelle l'appel de méthode GetSchemaTable() synchrone et retourne une tâche terminée. L'implémentation par défaut retourne une tâche annulée si un cancellationToken déjà annulé est passé. Les exceptions levées par GetSchemaTable() sont communiquées via la propriété d'exception de tâche retournée.

(Hérité de DbDataReader)
GetStream(Int32)

Obtient un flux pour récupérer les données de la colonne spécifiée.

(Hérité de DbDataReader)
GetString(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'une chaîne.

GetTextReader(Int32)

Obtient un lecteur de texte pour récupérer les données de la colonne.

(Hérité de DbDataReader)
GetTimeSpan(Int32)

Obtient la valeur de la colonne spécifiée sous la forme d'un System.TimeSpan.

GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
GetValue(Int32)

Obtient la valeur de la colonne au numéro spécifié dans son format natif.

GetValues(Object[])

Remplit un tableau d'objets avec les valeurs de colonne de la ligne en cours.

InitializeLifetimeService()
Obsolète.

Obtient un objet de service de durée de vie pour contrôler la stratégie de durée de vie de cette instance.

(Hérité de MarshalByRefObject)
IsDBNull(Int32)

Obtient une valeur indiquant si la colonne contient des valeurs inexistantes ou manquantes.

IsDBNullAsync(Int32)

Obtient de manière asynchrone une valeur qui indique si la colonne contient des valeurs inexistantes ou manquantes.

(Hérité de DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Obtient de manière asynchrone une valeur qui indique si la colonne contient des valeurs inexistantes ou manquantes.

(Hérité de DbDataReader)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
MemberwiseClone(Boolean)

Crée une copie superficielle de l'objet MarshalByRefObject actuel.

(Hérité de MarshalByRefObject)
NextResult()

Fait passer OracleDataReader au résultat suivant.

NextResultAsync()

Avance le lecteur de manière asynchrone jusqu’au résultat suivant lors de la lecture des résultats d’un lot d’instructions.

(Hérité de DbDataReader)
NextResultAsync(CancellationToken)

Avance le lecteur de manière asynchrone jusqu’au résultat suivant lors de la lecture des résultats d’un lot d’instructions.

(Hérité de DbDataReader)
Read()

Fait passer le OracleDataReader à l’enregistrement suivant.

ReadAsync()

Avance le lecteur de manière asynchrone jusqu’à l’enregistrement suivant d’un jeu de résultats.

(Hérité de DbDataReader)
ReadAsync(CancellationToken)

Avance le lecteur de manière asynchrone jusqu’à l’enregistrement suivant d’un jeu de résultats.

(Hérité de DbDataReader)
ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Implémentations d’interfaces explicites

IDataRecord.GetData(Int32)

Pour obtenir une description de ce membre, consultez GetData(Int32).

(Hérité de DbDataReader)
IEnumerable.GetEnumerator()

Retourne un énumérateur qui itère au sein d’une collection.

Méthodes d’extension

CanGetColumnSchema(DbDataReader)

Obtient une valeur qui indique si un DbDataReader peut obtenir un schéma de colonne.

GetColumnSchema(DbDataReader)

Obtient le schéma de colonne (collection DbColumn) pour un DbDataReader.

Cast<TResult>(IEnumerable)

Effectue un cast des éléments d'un IEnumerable vers le type spécifié.

OfType<TResult>(IEnumerable)

Filtre les éléments d'un IEnumerable en fonction du type spécifié.

AsParallel(IEnumerable)

Active la parallélisation d'une requête.

AsQueryable(IEnumerable)

Convertit un IEnumerable en IQueryable.

S’applique à