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 element OracleConnection, , OracleCommandi OracleDataReader. 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 , należy wywołać OracleDataReader metodę ExecuteReaderOracleCommand 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ć, zanim będzie można wywołać metodę CloseRecordsAffected.

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

W poniższych dwóch przykładach Visual Basic pokazano, jak użyć w celu pobrania > Oracle

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;
/

Ten przykład Visual Basic wykonuje procedurę składowaną PL/SQL zwracającą parametr REF CURSOR 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

Ten przykład Visual Basic wykonuje procedurę składowaną PL/SQL, która zwraca dwa parametry REF CURSOR i odczytuje wartości przy użyciu 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 elementu OracleDataReader w celu uzyskania dostępu do danych i użyto kilku OracleType struktur do wyświetlenia 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

Nazwa Opis
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 OracleDataReader element jest zamknięty.

Item[Int32]

Pobiera wartość określonej kolumny w formacie natywnym, biorąc pod uwagę porządkowość 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

Nazwa Opis
Close()

OracleDataReader Zamyka obiekt.

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 DbDataReader klasy.

(Odziedziczone po DbDataReader)
Dispose(Boolean)

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

(Odziedziczone po DbDataReader)
Equals(Object)

Określa, czy określony obiekt jest równy bieżącemu obiektowi.

(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, zaczynając 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ślonej kolumny przesunięcia do buforu jako tablicy, zaczynając od danego przesunięcia buforu.

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 żą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 element IEnumerator , który może służyć do iterowania wierszy w czytniku danych.

GetFieldType(Int32)

Pobiera typ Type danych obiektu .

GetFieldValue<T>(Int32)

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)
GetFieldValueAsync<T>(Int32)

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 globalnie unikatowy identyfikator (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ę, biorąc pod uwagę 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.

GetStream(Int32)

Pobiera strumień do pobierania 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()

Pobiera Type bieżącego wystąpienia.

(Odziedziczone po Object)
GetValue(Int32)

Pobiera wartość kolumny w określonym kodzie 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, CancellationToken)

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

(Odziedziczone po DbDataReader)
IsDBNullAsync(Int32)

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 Object.

(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 zwiększa czytelnika do następnego wyniku podczas odczytywania wyników partii instrukcji.

(Odziedziczone po DbDataReader)
NextResultAsync(CancellationToken)

Asynchronicznie zwiększa 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 czytelnika do następnego rekordu w zestawie wyników.

(Odziedziczone po DbDataReader)
ReadAsync(CancellationToken)

Asynchronicznie zwiększa czytelnika 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

Nazwa Opis
IDataRecord.GetData(Int32)

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

(Odziedziczone po DbDataReader)
IEnumerable.GetEnumerator()

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

Metody rozszerzania

Nazwa Opis
AsParallel(IEnumerable)

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

AsQueryable(IEnumerable)

Konwertuje IEnumerable na IQueryable.

CanGetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Rzutuje elementy IEnumerable do określonego typu.

GetColumnSchema(DbDataReader)

Pobiera schemat kolumny (DbColumn kolekcja) dla elementu DbDataReader.

OfType<TResult>(IEnumerable)

Filtruje elementy IEnumerable na podstawie określonego typu.

Dotyczy