OracleDataReader Klasse

Definition

Bietet eine Möglichkeit zum Lesen eines Vorwärtsdatenstroms von Datenzeilen aus einer Datenquelle. Diese Klasse kann nicht vererbt werden.

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
Vererbung
OracleDataReader
Vererbung
Implementiert

Beispiele

Im folgenden Beispiel wird ein , ein OracleConnectionOracleCommandund ein OracleDataReader. Im Beispiel werden die Daten gelesen und in die Konsole geschrieben. Schließlich schließt das Beispiel den OracleDataReader, dann die 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

Hinweise

Zum Erstellen eines OracleDataReaderObjekts müssen Sie die ExecuteReader Methode des OracleCommand Objekts aufrufen, anstatt direkt einen Konstruktor zu verwenden.

Änderungen, die an einem Resultset durch einen anderen Prozess oder Thread vorgenommen wurden, während Daten gelesen werden, sind möglicherweise für den Benutzer der OracleDataReader.

IsClosed und RecordsAffected sind die einzigen Eigenschaften, die Sie nach dem OracleDataReader Schließen aufrufen können. In einigen Fällen müssen Sie anrufen Close , bevor Sie anrufen RecordsAffectedkönnen.

OracleDataReader Mehrere können jederzeit geöffnet werden.

Die folgenden beiden Visual Basic Beispiele veranschaulichen die Verwendung eines OracleDataReader zum Abrufen eines Oracle REF CURSOR. In diesen Beispielen werden Tabellen verwendet, die im Oracle Scott/Tiger-Schema definiert sind und den folgenden PL/SQL-Paket- und Pakettext erfordern. Sie müssen diese auf Ihrem Server erstellen, um die Beispiele zu verwenden.

Erstellen Sie das folgende Oracle-Paket auf dem 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;
/

Erstellen Sie den folgenden Oracle-Paketkörper auf dem 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;
/

In diesem Visual Basic Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die einen REF CURSOR-Parameter zurückgibt und den Wert als OracleDataReader liest.

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

In diesem Visual Basic Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die zwei REF CURSOR-Parameter zurückgibt und die Werte mithilfe eines OracleDataReader liest.

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

In diesem C#-Beispiel wird eine Oracle-Tabelle erstellt und mit Daten geladen. Sie müssen dieses Beispiel vor dem Ausführen des nachfolgenden Beispiels ausführen, das die Verwendung eines OracleDataReader Zugriffs auf die Daten mithilfe von OracleType-Strukturen veranschaulicht.

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

In diesem C#-Beispiel wird ein OracleDataReader Beispiel für den Zugriff auf Daten verwendet, und es werden mehrere OracleType Strukturen zum Anzeigen der Daten verwendet.

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

Eigenschaften

Name Beschreibung
Depth

Ruft einen Wert ab, der die Tiefe der Schachtelung für die aktuelle Zeile angibt.

FieldCount

Ruft die Anzahl der Spalten in der aktuellen Zeile ab.

HasRows

Ruft einen Wert ab, der angibt, ob die OracleDataReader ein oder mehrere Zeilen enthält.

IsClosed

Gibt an, ob die OracleDataReader Zeichenfolge geschlossen ist.

Item[Int32]

Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, wenn die Spalte Ordnungszahl angegeben ist.

Item[String]

Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, das den Spaltennamen enthält.

RecordsAffected

Ruft die Anzahl der Zeilen geändert, eingefügt oder gelöscht durch Ausführung der SQL-Anweisung ab.

VisibleFieldCount

Ruft die Anzahl der Felder in dem DbDataReader nicht ausgeblendeten ab.

(Geerbt von DbDataReader)

Methoden

Name Beschreibung
Close()

Schließt das OracleDataReader Objekt.

CreateObjRef(Type)

Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird.

(Geerbt von MarshalByRefObject)
Dispose()

Gibt die Ressourcen frei, die von diesem Objekt verwendet werden.

Dispose()

Gibt alle Ressourcen frei, die von der aktuellen Instanz der DbDataReader Klasse verwendet werden.

(Geerbt von DbDataReader)
Dispose(Boolean)

Gibt die nicht verwalteten Ressourcen frei, die von den DbDataReader verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei.

(Geerbt von DbDataReader)
Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetBoolean(Int32)

Ruft den Wert der angegebenen Spalte als booleschen Wert ab.

GetByte(Int32)

Ruft den Wert der angegebenen Spalte als Byte ab.

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

Liest einen Bytestrom aus dem angegebenen Spaltenoffset als Array, beginnend mit dem angegebenen Pufferoffset, in den Puffer.

GetChar(Int32)

Ruft den Wert der angegebenen Spalte als Zeichen ab.

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

Liest einen Datenstrom von Zeichen aus dem angegebenen Spaltenoffset in den Puffer als Array ab dem angegebenen Pufferoffset.

GetData(Int32)

Gibt einen IDataReader Wert für die angegebene Spalten-Ordnungszahl zurück.

GetData(Int32)

Gibt einen geschachtelten Datenleser für die angeforderte Spalte zurück.

(Geerbt von DbDataReader)
GetDataTypeName(Int32)

Ruft den Namen des Quelldatentyps ab.

GetDateTime(Int32)

Ruft den Wert der angegebenen Spalte als DateTime Objekt ab.

GetDbDataReader(Int32)

Gibt ein DbDataReader Objekt für die angeforderte Spalten-Ordnungszahl zurück, die mit einer anbieterspezifischen Implementierung überschrieben werden kann.

(Geerbt von DbDataReader)
GetDecimal(Int32)

Ruft den Wert der angegebenen Spalte als Decimal Objekt ab.

GetDouble(Int32)

Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit doppelter Genauigkeit ab.

GetEnumerator()

Gibt einen IEnumerator Wert zurück, der zum Durchlaufen der Zeilen im Datenleser verwendet werden kann.

GetFieldType(Int32)

Ruft den Type Datentyp des Objekts ab.

GetFieldValue<T>(Int32)

Ruft den Wert der angegebenen Spalte als angeforderten Typ ab.

(Geerbt von DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Ruft asynchron den Wert der angegebenen Spalte als angeforderten Typ ab.

(Geerbt von DbDataReader)
GetFieldValueAsync<T>(Int32)

Ruft asynchron den Wert der angegebenen Spalte als angeforderten Typ ab.

(Geerbt von DbDataReader)
GetFloat(Int32)

Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit einfacher Genauigkeit ab.

GetGuid(Int32)

Ruft den Wert der angegebenen Spalte als GUID (Globally Unique Identifier) ab.

GetHashCode()

Dient als Standardhashfunktion.

(Geerbt von Object)
GetInt16(Int32)

Ruft den Wert der angegebenen Spalte als eine 16-Bit-ganzzahlige Vorzeichen ab.

GetInt32(Int32)

Ruft den Wert der angegebenen Spalte als 32-Bit-ganzzahlige Vorzeichen ab.

GetInt64(Int32)

Ruft den Wert der angegebenen Spalte als ganze 64-Bit-Ganzzahl ab.

GetLifetimeService()

Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert.

(Geerbt von MarshalByRefObject)
GetName(Int32)

Ruft den Namen der angegebenen Spalte ab.

GetOracleBFile(Int32)

Ruft den Wert der angegebenen Spalte als OracleBFile Objekt ab.

GetOracleBinary(Int32)

Ruft den Wert der angegebenen Spalte als OracleBinary Objekt ab.

GetOracleDateTime(Int32)

Ruft den Wert der angegebenen Spalte als OracleDateTime Objekt ab.

GetOracleLob(Int32)

Ruft den Wert der angegebenen Spalte als OracleLob Objekt ab.

GetOracleMonthSpan(Int32)

Ruft den Wert der angegebenen Spalte als OracleMonthSpan Objekt ab.

GetOracleNumber(Int32)

Ruft den Wert der angegebenen Spalte als OracleNumber Objekt ab.

GetOracleString(Int32)

Ruft den Wert der angegebenen Spalte als OracleString Objekt ab.

GetOracleTimeSpan(Int32)

Ruft den Wert der angegebenen Spalte als OracleTimeSpan Objekt ab.

GetOracleValue(Int32)

Ruft den Wert der Spalte am angegebenen Ordinal im Oracle-Format ab.

GetOracleValues(Object[])

Ruft alle Attributspalten in der aktuellen Zeile im Oracle-Format ab.

GetOrdinal(String)

Ruft die Spalten-Ordnungszahl ab, wobei der Name der Spalte angegeben ist.

GetProviderSpecificFieldType(Int32)

Ruft eine Object Darstellung des zugrunde liegenden anbieterspezifischen Feldtyps ab.

GetProviderSpecificValue(Int32)

Ruft eine Object Darstellung des zugrunde liegenden anbieterspezifischen Feldtyps ab.

GetProviderSpecificValues(Object[])

Ruft ein Array von Objekten ab, die eine Darstellung der zugrunde liegenden anbieterspezifischen Werte sind.

GetSchemaTable()

Gibt einen DataTable Wert zurück, der die Spaltenmetadaten von OracleDataReader beschreibt.

GetStream(Int32)

Ruft einen Datenstrom ab, um Daten aus der angegebenen Spalte abzurufen.

(Geerbt von DbDataReader)
GetString(Int32)

Ruft den Wert der angegebenen Spalte als Zeichenfolge ab.

GetTextReader(Int32)

Ruft einen Textleser ab, um Daten aus der Spalte abzurufen.

(Geerbt von DbDataReader)
GetTimeSpan(Int32)

Ruft den Wert der angegebenen Spalte als ein System.TimeSpan.

GetType()

Ruft die Type der aktuellen Instanz ab.

(Geerbt von Object)
GetValue(Int32)

Ruft den Wert der Spalte am angegebenen Ordinal im systemeigenen Format ab.

GetValues(Object[])

Füllt ein Array von Objekten mit den Spaltenwerten der aktuellen Zeile auf.

InitializeLifetimeService()

Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern.

(Geerbt von MarshalByRefObject)
IsDBNull(Int32)

Ruft einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

IsDBNullAsync(Int32, CancellationToken)

Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

(Geerbt von DbDataReader)
IsDBNullAsync(Int32)

Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält.

(Geerbt von DbDataReader)
MemberwiseClone()

Erstellt eine flache Kopie der aktuellen Object.

(Geerbt von Object)
MemberwiseClone(Boolean)

Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts.

(Geerbt von MarshalByRefObject)
NextResult()

Wechselt zum OracleDataReader nächsten Ergebnis.

NextResultAsync()

Wechselt den Leser asynchron zum nächsten Ergebnis, wenn die Ergebnisse einer Reihe von Anweisungen gelesen werden.

(Geerbt von DbDataReader)
NextResultAsync(CancellationToken)

Wechselt den Leser asynchron zum nächsten Ergebnis, wenn die Ergebnisse einer Reihe von Anweisungen gelesen werden.

(Geerbt von DbDataReader)
Read()

Wechselt zum OracleDataReader nächsten Datensatz.

ReadAsync()

Wechselt den Leser asynchron zum nächsten Datensatz in einem Resultset.

(Geerbt von DbDataReader)
ReadAsync(CancellationToken)

Wechselt den Leser asynchron zum nächsten Datensatz in einem Resultset.

(Geerbt von DbDataReader)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)

Explizite Schnittstellenimplementierungen

Name Beschreibung
IDataRecord.GetData(Int32)

Eine Beschreibung dieses Mitglieds finden Sie unter GetData(Int32).

(Geerbt von DbDataReader)
IEnumerable.GetEnumerator()

Gibt einen Enumerator zurück, der eine Auflistung durchläuft.

Erweiterungsmethoden

Name Beschreibung
AsParallel(IEnumerable)

Aktiviert die Parallelisierung einer Abfrage.

AsQueryable(IEnumerable)

Wandelt eine IEnumerable in eine IQueryableum.

CanGetColumnSchema(DbDataReader)

Ruft einen Wert ab, der angibt, ob ein DbDataReader Spaltenschema abgerufen werden kann.

Cast<TResult>(IEnumerable)

Wandelt die Elemente eines IEnumerable in den angegebenen Typ um.

GetColumnSchema(DbDataReader)

Ruft das Spaltenschema (DbColumn Auflistung) für ein DbDataReader.

OfType<TResult>(IEnumerable)

Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ.

Gilt für: