OracleDataReader Klasa

Definicja

Zapewnia sposób odczytywania strumienia danych tylko do przodu wierszy ze źródła danych. Klasa ta nie może być dziedziczona.

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
Dziedziczenie
OracleDataReader
Dziedziczenie
Implementuje

Przykłady

Poniższy przykład tworzy elementy OracleConnection, i OracleCommandOracleDataReader. Przykład odczytuje dane, zapisuj je w konsoli. Na koniec przykład zamyka OracleDataReaderelement , a następnie 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

Uwagi

Aby utworzyć obiekt OracleDataReader, należy wywołać ExecuteReader metodę OracleCommand obiektu, a nie bezpośrednio przy użyciu konstruktora.

Zmiany wprowadzone w zestawie wyników przez inny proces lub wątek podczas odczytywania danych mogą być widoczne dla użytkownika .OracleDataReader

IsClosed i RecordsAffected są jedynymi właściwościami, które można wywołać po OracleDataReader zamknięciu. W niektórych przypadkach należy zadzwonić Close , zanim będzie można wywołać metodę RecordsAffected.

W danym momencie może być otwartych więcej niż jeden OracleDataReader .

W poniższych dwóch przykładach w języku Visual Basic pokazano, jak używać elementu OracleDataReader do pobierania programu Oracle REF CURSOR. W tych przykładach są używane tabele zdefiniowane w schemacie Oracle Scott/Tiger i wymagają następującego pakietu PL/SQL i treści pakietu. Należy je utworzyć na serwerze, aby użyć przykładów.

Utwórz następujący pakiet Oracle na serwerze 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;  
/  

Utwórz następującą treść pakietu Oracle na serwerze 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;  
/  

W tym przykładzie języka Visual Basic jest wykonywana procedura składowana PL/SQL, która zwraca REF CURSOR parametr i odczytuje wartość jako 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  

W tym przykładzie języka Visual Basic jest wykonywana procedura składowana PL/SQL, która zwraca dwa REF CURSOR parametry i odczytuje wartości przy użyciu elementu 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  

Ten przykład w języku C# tworzy tabelę Oracle i ładuje ją z danymi. Należy uruchomić ten przykład przed uruchomieniem kolejnego przykładu, który demonstruje użycie elementu OracleDataReader w celu uzyskania dostępu do danych przy użyciu struktur 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();  
   }  
}  

W tym przykładzie w języku C# użyto obiektu OracleDataReader do uzyskiwania dostępu do danych i użyto kilku OracleType struktur do wyświetlania danych.

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

Właściwości

Depth

Pobiera wartość wskazującą głębokość zagnieżdżania dla bieżącego wiersza.

FieldCount

Pobiera liczbę kolumn w bieżącym wierszu.

HasRows

Pobiera wartość wskazującą, czy OracleDataReader element zawiera co najmniej jeden wiersz.

IsClosed

Wskazuje, czy element OracleDataReader jest zamknięty.

Item[Int32]

Pobiera wartość określonej kolumny w formacie natywnym, biorąc pod uwagę liczbę porządkową kolumny.

Item[String]

Pobiera wartość określonej kolumny w formacie natywnym, biorąc pod uwagę nazwę kolumny.

RecordsAffected

Pobiera liczbę wierszy zmienionych, wstawionych lub usuniętych przez wykonanie instrukcji SQL.

VisibleFieldCount

Pobiera liczbę pól w polach DbDataReader , które nie są ukryte.

(Odziedziczone po DbDataReader)

Metody

Close()

OracleDataReader Zamyka obiekt.

CloseAsync()

Asynchronicznie zamyka DbDataReader obiekt.

(Odziedziczone po DbDataReader)
CreateObjRef(Type)

Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym.

(Odziedziczone po MarshalByRefObject)
Dispose()

Zwalnia zasoby używane przez ten obiekt.

Dispose()

Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy DbDataReader.

(Odziedziczone po DbDataReader)
Dispose(Boolean)

Zwalnia zasoby niezarządzane używane przez element DbDataReader i opcjonalnie zwalnia zasoby zarządzane.

(Odziedziczone po DbDataReader)
DisposeAsync()

Asynchronicznie zwalnia wszystkie zasoby używane przez bieżące wystąpienie DbDataReader klasy.

(Odziedziczone po DbDataReader)
Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetBoolean(Int32)

Pobiera wartość określonej kolumny jako wartość logiczną.

GetByte(Int32)

Pobiera wartość określonej kolumny jako bajt.

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

Odczytuje strumień bajtów z określonej kolumny przesunięcia do buforu jako tablicy, począwszy od danego przesunięcia buforu.

GetChar(Int32)

Pobiera wartość określonej kolumny jako znak.

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

Odczytuje strumień znaków z określonego przesunięcia kolumny do buforu jako tablicy, począwszy od danego przesunięcia buforu.

GetColumnSchemaAsync(CancellationToken)

Jest to asynchroniczna wersja programu GetColumnSchema(DbDataReader). Dostawcy powinni zastąpić odpowiednią implementacją. Opcjonalnie cancellationToken można je honorować. Domyślna implementacja wywołuje wywołanie synchroniczne GetColumnSchema(DbDataReader) i zwraca ukończone zadanie. Domyślna implementacja zwróci anulowane zadanie, jeśli zostało już anulowane cancellationToken. Wyjątki zgłaszane przez GetColumnSchema(DbDataReader) program będą przekazywane za pośrednictwem zwróconej właściwości Wyjątek zadania.

(Odziedziczone po DbDataReader)
GetData(Int32)

Zwraca wartość IDataReader dla określonej kolumny porządkowej.

GetData(Int32)

Zwraca zagnieżdżony czytnik danych dla żądanej kolumny.

(Odziedziczone po DbDataReader)
GetDataTypeName(Int32)

Pobiera nazwę typu danych źródłowych.

GetDateTime(Int32)

Pobiera wartość określonej kolumny jako DateTime obiekt.

GetDbDataReader(Int32)

DbDataReader Zwraca obiekt dla żądanej kolumny porządkowej, który można zastąpić implementacją specyficzną dla dostawcy.

(Odziedziczone po DbDataReader)
GetDecimal(Int32)

Pobiera wartość określonej kolumny jako Decimal obiekt.

GetDouble(Int32)

Pobiera wartość określonej kolumny jako liczbę zmiennoprzecinkową o podwójnej precyzji.

GetEnumerator()

Zwraca wartość IEnumerator , która może służyć do iterowania wierszy w czytniku danych.

GetFieldType(Int32)

Type Pobiera typ danych obiektu .

GetFieldValue<T>(Int32)

Pobiera wartość określonej kolumny jako żądany typ.

(Odziedziczone po DbDataReader)
GetFieldValueAsync<T>(Int32)

Asynchronicznie pobiera wartość określonej kolumny jako żądany typ.

(Odziedziczone po DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Asynchronicznie pobiera wartość określonej kolumny jako żądany typ.

(Odziedziczone po DbDataReader)
GetFloat(Int32)

Pobiera wartość określonej kolumny jako liczbę zmiennoprzecinkową o pojedynczej precyzji.

GetGuid(Int32)

Pobiera wartość określonej kolumny jako unikatowy identyfikator globalny (GUID).

GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetInt16(Int32)

Pobiera wartość określonej kolumny jako 16-bitową liczbę całkowitą ze znakiem.

GetInt32(Int32)

Pobiera wartość określonej kolumny jako 32-bitową liczbę całkowitą ze znakiem.

GetInt64(Int32)

Pobiera wartość określonej kolumny jako 64-bitową liczbę całkowitą ze znakiem.

GetLifetimeService()
Przestarzałe.

Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
GetName(Int32)

Pobiera nazwę określonej kolumny.

GetOracleBFile(Int32)

Pobiera wartość określonej kolumny jako OracleBFile obiekt.

GetOracleBinary(Int32)

Pobiera wartość określonej kolumny jako OracleBinary obiekt.

GetOracleDateTime(Int32)

Pobiera wartość określonej kolumny jako OracleDateTime obiekt.

GetOracleLob(Int32)

Pobiera wartość określonej kolumny jako OracleLob obiekt.

GetOracleMonthSpan(Int32)

Pobiera wartość określonej kolumny jako OracleMonthSpan obiekt.

GetOracleNumber(Int32)

Pobiera wartość określonej kolumny jako OracleNumber obiekt.

GetOracleString(Int32)

Pobiera wartość określonej kolumny jako OracleString obiekt.

GetOracleTimeSpan(Int32)

Pobiera wartość określonej kolumny jako OracleTimeSpan obiekt.

GetOracleValue(Int32)

Pobiera wartość kolumny w określonym formacie Oracle.

GetOracleValues(Object[])

Pobiera wszystkie kolumny atrybutów w bieżącym wierszu w formacie Oracle.

GetOrdinal(String)

Pobiera porządkową kolumnę, podając nazwę kolumny.

GetProviderSpecificFieldType(Int32)

Pobiera element Object reprezentujący podstawowy typ pola specyficznego dla dostawcy.

GetProviderSpecificValue(Int32)

Pobiera element Object reprezentujący podstawowy typ pola specyficznego dla dostawcy.

GetProviderSpecificValues(Object[])

Pobiera tablicę obiektów, które są reprezentacją podstawowych wartości specyficznych dla dostawcy.

GetSchemaTable()

Zwraca element opisujący DataTable metadane kolumny oracleDataReader.

GetSchemaTableAsync(CancellationToken)

Jest to asynchroniczna wersja programu GetSchemaTable(). Dostawcy powinni zastąpić odpowiednią implementacją. Opcjonalnie cancellationToken można je honorować. Domyślna implementacja wywołuje wywołanie synchroniczne GetSchemaTable() i zwraca ukończone zadanie. Domyślna implementacja zwróci anulowane zadanie, jeśli zostało już anulowane cancellationToken. Wyjątki zgłaszane przez GetSchemaTable() program będą przekazywane za pośrednictwem zwróconej właściwości Wyjątek zadania.

(Odziedziczone po DbDataReader)
GetStream(Int32)

Pobiera strumień w celu pobrania danych z określonej kolumny.

(Odziedziczone po DbDataReader)
GetString(Int32)

Pobiera wartość określonej kolumny jako ciąg.

GetTextReader(Int32)

Pobiera czytnik tekstu w celu pobrania danych z kolumny.

(Odziedziczone po DbDataReader)
GetTimeSpan(Int32)

Pobiera wartość określonej kolumny jako System.TimeSpan.

GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
GetValue(Int32)

Pobiera wartość kolumny w określonym kodzie porządkowym w formacie natywnym.

GetValues(Object[])

Wypełnia tablicę obiektów wartościami kolumn bieżącego wiersza.

InitializeLifetimeService()
Przestarzałe.

Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia.

(Odziedziczone po MarshalByRefObject)
IsDBNull(Int32)

Pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości.

IsDBNullAsync(Int32)

Asynchronicznie pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości.

(Odziedziczone po DbDataReader)
IsDBNullAsync(Int32, CancellationToken)

Asynchronicznie pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości.

(Odziedziczone po DbDataReader)
MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
MemberwiseClone(Boolean)

Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu.

(Odziedziczone po MarshalByRefObject)
NextResult()

OracleDataReader Przechodzi do następnego wyniku.

NextResultAsync()

Asynchronicznie przechodzi czytelnika do następnego wyniku podczas odczytywania wyników partii instrukcji.

(Odziedziczone po DbDataReader)
NextResultAsync(CancellationToken)

Asynchronicznie przechodzi czytelnika do następnego wyniku podczas odczytywania wyników partii instrukcji.

(Odziedziczone po DbDataReader)
Read()

OracleDataReader Przechodzi do następnego rekordu.

ReadAsync()

Asynchronicznie zwiększa czytnik do następnego rekordu w zestawie wyników.

(Odziedziczone po DbDataReader)
ReadAsync(CancellationToken)

Asynchronicznie zwiększa czytnik do następnego rekordu w zestawie wyników.

(Odziedziczone po DbDataReader)
ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)

Jawne implementacje interfejsu

IDataRecord.GetData(Int32)

Aby uzyskać opis tego członka, zobacz GetData(Int32).

(Odziedziczone po DbDataReader)
IEnumerable.GetEnumerator()

Zwraca moduł wyliczający, który iteruje po kolekcji.

Metody rozszerzania

CanGetColumnSchema(DbDataReader)

Pobiera wartość wskazującą, czy DbDataReader można uzyskać schemat kolumny.

GetColumnSchema(DbDataReader)

Pobiera schemat kolumny (DbColumn kolekcja) dla elementu DbDataReader.

Cast<TResult>(IEnumerable)

Rzutuje elementy obiektu IEnumerable na określony typ.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable elementu na podstawie określonego typu.

AsParallel(IEnumerable)

Umożliwia równoległość zapytania.

AsQueryable(IEnumerable)

Konwertuje element IEnumerable na .IQueryable

Dotyczy