OracleDataReader Třída

Definice

Poskytuje způsob čtení datového proudu pouze dopředného proudu řádků dat ze zdroje dat. Tato třída se nemůže dědit.

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
Dědičnost
OracleDataReader
Dědičnost
Implementuje

Příklady

Následující příklad vytvoří OracleConnection, , OracleCommanda a OracleDataReader. Příklad čte data a zapíše je do konzoly. Nakonec příklad zavře OracleDataReader, a pak 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

Poznámky

Chcete-li vytvořit OracleDataReader, je nutné volat ExecuteReader metodu OracleCommand objektu, nikoli přímo pomocí konstruktoru.

Změny provedené v sadě výsledků jiným procesem nebo vláknem při čtení dat mohou být viditelné pro uživatele OracleDataReader.

IsClosed a RecordsAffected jsou jedinými vlastnostmi, které můžete volat po zavření OracleDataReader . V některých případech musíte zavolat Close , než budete moct volat RecordsAffected.

V daném okamžiku může být otevřeno více než jeden OracleDataReader .

Následující dva příklady Visual Basic ukazují, jak pomocí OracleDataReader načíst oracle REF CURSOR. Tyto příklady používají tabulky definované ve schématu Oracle Scott/Tiger a vyžadují následující balíček PL/SQL a tělo balíčku. Abyste mohli použít příklady, musíte je vytvořit na serveru.

Na serveru Oracle vytvořte následující balíček 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;
/

Na serveru Oracle vytvořte následující tělo balíčku 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;
/

Tento Visual Basic příklad spustí uloženou proceduru PL/SQL, která vrátí parametr REF CURSOR a přečte hodnotu 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

Tento Visual Basic příklad spustí uloženou proceduru PL/SQL, která vrátí dva parametry REF CURSOR a přečte hodnoty pomocí 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

Tento příklad jazyka C# vytvoří tabulku Oracle a načte ji s daty. Tento příklad musíte spustit před spuštěním následujícího příkladu, který ukazuje použití OracleDataReader přístupu k datům pomocí 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();
   }
}

Tento příklad jazyka OracleDataReader C# používá přístup k datům a k zobrazení dat používá několik OracleType struktur.

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

Vlastnosti

Name Description
Depth

Získá hodnotu označující hloubku vnoření pro aktuální řádek.

FieldCount

Získá počet sloupců v aktuálním řádku.

HasRows

Získá hodnotu určující, zda OracleDataReader obsahuje jeden nebo více řádků.

IsClosed

Určuje, zda je uzavřena OracleDataReader .

Item[Int32]

Získá hodnotu zadaného sloupce v jeho nativním formátu vzhledem k pořadí sloupců.

Item[String]

Získá hodnotu zadaného sloupce v jeho nativním formátu vzhledem k názvu sloupce.

RecordsAffected

Získá počet řádků změněné, vložené nebo odstraněné spuštěním příkazu SQL.

VisibleFieldCount

Získá početpolích DbDataReader

(Zděděno od DbDataReader)

Metody

Name Description
Close()

OracleDataReader Zavře objekt.

CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy serveru sloužícího ke komunikaci se vzdáleným objektem.

(Zděděno od MarshalByRefObject)
Dispose()

Uvolní prostředky, které tento objekt používá.

Dispose()

Uvolní všechny prostředky používané aktuální instancí DbDataReader třídy.

(Zděděno od DbDataReader)
Dispose(Boolean)

Uvolní nespravované prostředky používané DbDataReader a volitelně uvolní spravované prostředky.

(Zděděno od DbDataReader)
Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

(Zděděno od Object)
GetBoolean(Int32)

Získá hodnotu zadaného sloupce jako logickou hodnotu.

GetByte(Int32)

Získá hodnotu zadaného sloupce jako bajt.

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

Načte datový proud bajtů ze zadaného posunu sloupce do vyrovnávací paměti jako pole počínaje daným posunem vyrovnávací paměti.

GetChar(Int32)

Získá hodnotu zadaného sloupce jako znak.

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

Načte datový proud znaků ze zadaného posunu sloupce do vyrovnávací paměti jako pole počínaje daným posunem vyrovnávací paměti.

GetData(Int32)

IDataReader Vrátí pro zadaný sloupec pořadový řádek.

GetData(Int32)

Vrátí vnořenou čtečku dat pro požadovaný sloupec.

(Zděděno od DbDataReader)
GetDataTypeName(Int32)

Získá název zdrojového datového typu.

GetDateTime(Int32)

Získá hodnotu zadaného sloupce jako DateTime objektu.

GetDbDataReader(Int32)

DbDataReader Vrátí objekt pro požadovaný řadový sloupec, který lze přepsat pomocí implementace specifické pro zprostředkovatele.

(Zděděno od DbDataReader)
GetDecimal(Int32)

Získá hodnotu zadaného sloupce jako Decimal objektu.

GetDouble(Int32)

Získá hodnotu zadaného sloupce jako číslo s plovoucí desetinnou čárkou s dvojitou přesností.

GetEnumerator()

IEnumerator Vrátí hodnotu, kterou lze použít k iteraci řádků v čtečce dat.

GetFieldType(Int32)

Type Získá to datový typ objektu.

GetFieldValue<T>(Int32)

Získá hodnotu zadaného sloupce jako požadovaný typ.

(Zděděno od DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Asynchronně získá hodnotu zadaného sloupce jako požadovaný typ.

(Zděděno od DbDataReader)
GetFieldValueAsync<T>(Int32)

Asynchronně získá hodnotu zadaného sloupce jako požadovaný typ.

(Zděděno od DbDataReader)
GetFloat(Int32)

Získá hodnotu zadaného sloupce jako číslo s plovoucí desetinnou čárkou s jednoduchou přesností.

GetGuid(Int32)

Získá hodnotu zadaného sloupce jako globálně jedinečný identifikátor (GUID).

GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetInt16(Int32)

Získá hodnotu zadaného sloupce jako 16bitové celé číslo se signed.

GetInt32(Int32)

Získá hodnotu zadaného sloupce jako 32bitové signed integer.

GetInt64(Int32)

Získá hodnotu zadaného sloupce jako 64bitové celé číslo se signedem.

GetLifetimeService()

Načte objekt služby aktuální životnosti, který řídí zásady životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
GetName(Int32)

Získá název zadaného sloupce.

GetOracleBFile(Int32)

Získá hodnotu zadaného sloupce jako OracleBFile objektu.

GetOracleBinary(Int32)

Získá hodnotu zadaného sloupce jako OracleBinary objektu.

GetOracleDateTime(Int32)

Získá hodnotu zadaného sloupce jako OracleDateTime objektu.

GetOracleLob(Int32)

Získá hodnotu zadaného sloupce jako OracleLob objektu.

GetOracleMonthSpan(Int32)

Získá hodnotu zadaného sloupce jako OracleMonthSpan objektu.

GetOracleNumber(Int32)

Získá hodnotu zadaného sloupce jako OracleNumber objektu.

GetOracleString(Int32)

Získá hodnotu zadaného sloupce jako OracleString objektu.

GetOracleTimeSpan(Int32)

Získá hodnotu zadaného sloupce jako OracleTimeSpan objektu.

GetOracleValue(Int32)

Získá hodnotu sloupce v zadané pořadové číslo ve formátu Oracle.

GetOracleValues(Object[])

Získá všechny sloupce atributů v aktuálním řádku ve formátu Oracle.

GetOrdinal(String)

Získá řadový sloupec s názvem sloupce.

GetProviderSpecificFieldType(Int32)

Object Získá, který je reprezentace základního typu pole konkrétního zprostředkovatele.

GetProviderSpecificValue(Int32)

Object Získá, který je reprezentace základního typu pole konkrétního zprostředkovatele.

GetProviderSpecificValues(Object[])

Získá pole objektů, které jsou reprezentace podkladového zprostředkovatele specifické hodnoty.

GetSchemaTable()

Vrátí hodnotu DataTable , která popisuje metadata sloupce OracleDataReader.

GetStream(Int32)

Získá datový proud pro načtení dat ze zadaného sloupce.

(Zděděno od DbDataReader)
GetString(Int32)

Získá hodnotu zadaného sloupce jako řetězec.

GetTextReader(Int32)

Získá čtečku textu pro načtení dat ze sloupce.

(Zděděno od DbDataReader)
GetTimeSpan(Int32)

Získá hodnotu zadaného sloupce jako System.TimeSpan.

GetType()

Získá Type aktuální instance.

(Zděděno od Object)
GetValue(Int32)

Získá hodnotu sloupce v zadaném pořadovém formátu v nativním formátu.

GetValues(Object[])

Naplní pole objektů hodnotami sloupců aktuálního řádku.

InitializeLifetimeService()

Získá objekt služby životnosti pro řízení zásad životnosti pro tuto instanci.

(Zděděno od MarshalByRefObject)
IsDBNull(Int32)

Získá hodnotu označující, zda sloupec obsahuje neexistující nebo chybějící hodnoty.

IsDBNullAsync(Int32, CancellationToken)

Asynchronně získá hodnotu, která označuje, zda sloupec obsahuje neexistující nebo chybějící hodnoty.

(Zděděno od DbDataReader)
IsDBNullAsync(Int32)

Asynchronně získá hodnotu, která označuje, zda sloupec obsahuje neexistující nebo chybějící hodnoty.

(Zděděno od DbDataReader)
MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
MemberwiseClone(Boolean)

Vytvoří mělkou kopii aktuálního MarshalByRefObject objektu.

(Zděděno od MarshalByRefObject)
NextResult()

Přejde na OracleDataReader další výsledek.

NextResultAsync()

Asynchronně přejde čtenáře na další výsledek při čtení výsledků dávky příkazů.

(Zděděno od DbDataReader)
NextResultAsync(CancellationToken)

Asynchronně přejde čtenáře na další výsledek při čtení výsledků dávky příkazů.

(Zděděno od DbDataReader)
Read()

Přejde na OracleDataReader další záznam.

ReadAsync()

Asynchronně přejde čtenáře na další záznam v sadě výsledků.

(Zděděno od DbDataReader)
ReadAsync(CancellationToken)

Asynchronně přejde čtenáře na další záznam v sadě výsledků.

(Zděděno od DbDataReader)
ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)

Explicitní implementace rozhraní

Name Description
IDataRecord.GetData(Int32)

Popis tohoto člena naleznete v tématu GetData(Int32).

(Zděděno od DbDataReader)
IEnumerable.GetEnumerator()

Vrátí enumerátor, který iteruje kolekcí.

Metody rozšíření

Name Description
AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede IEnumerable na IQueryable.

CanGetColumnSchema(DbDataReader)

Získá hodnotu, která označuje, zda DbDataReader může získat schéma sloupce.

Cast<TResult>(IEnumerable)

Přetypuje prvky IEnumerable na zadaný typ.

GetColumnSchema(DbDataReader)

Získá schéma sloupce (DbColumnkolekce) pro .DbDataReader

OfType<TResult>(IEnumerable)

Filtruje prvky IEnumerable na základě zadaného typu.

Platí pro