OracleDataReader Třída

Definice

Poskytuje způsob čtení dopředného datového proudu řádků ze zdroje dat. Tuto třídu nelze 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, a OracleCommandOracleDataReader. Příklad čte data a zapisuje je do konzoly. Nakonec příklad zavře OracleDataReadera 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 metodu ExecuteReader objektu OracleCommand , nikoli přímo pomocí konstruktoru.

Změny provedené v sadě výsledků jiným procesem nebo vláknem během čtení dat můžou být viditelné uživateli OracleDataReadernástroje .

IsClosed a RecordsAffected jsou jediné vlastnosti, které můžete volat po zavření objektu OracleDataReader . V některých případech je nutné volat Close před voláním RecordsAffected.

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

Následující dva příklady jazyka Visual Basic ukazují, jak použít k OracleDataReader načtení Oracle REF CURSOR. V těchto příkladech se 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 příklady použít, 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í text 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 příklad jazyka Visual Basic spustí uloženou proceduru PL/SQL, která vrátí REF CURSOR parametr a nač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 příklad jazyka Visual Basic spustí uloženou proceduru PL/SQL, která vrací dva REF CURSOR parametry a nač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 dalšího příkladu, který ukazuje použití objektu OracleDataReader pro přístup 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 C# používá pro přístup k datům objekt OracleDataReader 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

Depth

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

FieldCount

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

HasRows

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

IsClosed

Určuje, zda OracleDataReader je uzavřena.

Item[Int32]

Získá hodnotu zadaného sloupce v jeho nativním formátu vzhledem k pořadové číslo sloupci.

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ých, vložených nebo odstraněných spuštěním příkazu SQL.

VisibleFieldCount

Získá počet polí v objektu DbDataReader , která nejsou skryta.

(Zděděno od DbDataReader)

Metody

Close()

OracleDataReader Zavře objekt.

CloseAsync()

Asynchronně zavře DbDataReader objekt.

(Zděděno od DbDataReader)
CreateObjRef(Type)

Vytvoří objekt, který obsahuje všechny relevantní informace potřebné k vygenerování proxy sloužící 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é nástrojem DbDataReader a volitelně uvolní spravované prostředky.

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

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

(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 logická hodnota.

GetByte(Int32)

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

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

Načte stream 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 stream znaků ze zadaného posunu sloupce do vyrovnávací paměti jako pole počínaje daným posunem vyrovnávací paměti.

GetColumnSchemaAsync(CancellationToken)

Toto je asynchronní verze nástroje GetColumnSchema(DbDataReader). Poskytovatelé by měli přepsat příslušnou implementací. Volitelně cancellationToken může být respektována. Výchozí implementace vyvolá synchronní GetColumnSchema(DbDataReader) volání a vrátí dokončenou úlohu. Výchozí implementace vrátí zrušenou úlohu, pokud byla předána již zrušená cancellationTokenúloha . Výjimky vyvolané nástrojem GetColumnSchema(DbDataReader) budou oznámeny prostřednictvím vrácené vlastnosti Task Exception (Výjimka úkolu).

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

Vrátí hodnotu IDataReader pro zadanou řadovou číslo sloupce.

GetData(Int32)

Vrátí čtečku vnořených 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 objekt.

GetDbDataReader(Int32)

DbDataReader Vrátí objekt pro pořadové číslo požadovaného sloupce, který lze přepsat implementací specifickou pro zprostředkovatele.

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

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

GetDouble(Int32)

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

GetEnumerator()

Vrátí hodnotu IEnumerator , která se dá použít k iteraci řádky ve čtečce dat.

GetFieldType(Int32)

Type Získá objekt , který je datový typ objektu.

GetFieldValue<T>(Int32)

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

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í desetinou čárkou s jednou přesností.

GetGuid(Int32)

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

GetHashCode()

Slouží jako výchozí hashovací funkce.

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

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

GetInt32(Int32)

Získá hodnotu zadaného sloupce jako 32bitové podepsané celé číslo.

GetInt64(Int32)

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

GetLifetimeService()
Zastaralé.

Načte aktuální životnost objektu služby, 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 objekt.

GetOracleBinary(Int32)

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

GetOracleDateTime(Int32)

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

GetOracleLob(Int32)

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

GetOracleMonthSpan(Int32)

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

GetOracleNumber(Int32)

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

GetOracleString(Int32)

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

GetOracleTimeSpan(Int32)

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

GetOracleValue(Int32)

Získá hodnotu sloupce v zadaném pořadovém čísla v jeho formátu Oracle.

GetOracleValues(Object[])

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

GetOrdinal(String)

Získá pořadové číslo sloupce vzhledem k názvu sloupce.

GetProviderSpecificFieldType(Int32)

Získá, Object který je reprezentace podkladového typu pole specifického zprostředkovatele.

GetProviderSpecificValue(Int32)

Získá, Object který je reprezentace podkladového typu pole specifického zprostředkovatele.

GetProviderSpecificValues(Object[])

Získá pole objektů, které jsou reprezentací podkladových hodnot specifických pro zprostředkovatele.

GetSchemaTable()

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

GetSchemaTableAsync(CancellationToken)

Toto je asynchronní verze nástroje GetSchemaTable(). Poskytovatelé by měli přepsat příslušnou implementací. Volitelně cancellationToken může být respektována. Výchozí implementace vyvolá synchronní GetSchemaTable() volání a vrátí dokončenou úlohu. Výchozí implementace vrátí zrušenou úlohu, pokud byla předána již zrušená cancellationTokenúloha . Výjimky vyvolané nástrojem GetSchemaTable() budou oznámeny prostřednictvím vrácené vlastnosti Task Exception (Výjimka úkolu).

(Zděděno od DbDataReader)
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()

Type Získá z aktuální instance.

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

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

GetValues(Object[])

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

InitializeLifetimeService()
Zastaralé.

Získá životnost objektu služby, který řídí zásady ž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)

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

(Zděděno od DbDataReader)
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)
MemberwiseClone()

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

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

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

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

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

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

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

ReadAsync()

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

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

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

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

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

(Zděděno od Object)

Explicitní implementace rozhraní

IDataRecord.GetData(Int32)

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

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

Vrací enumerátor procházející kolekci.

Metody rozšíření

CanGetColumnSchema(DbDataReader)

Získá hodnotu, která označuje, zda DbDataReader lze získat schéma sloupce.

GetColumnSchema(DbDataReader)

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

Cast<TResult>(IEnumerable)

Přetypuje prvky objektu na IEnumerable zadaný typ.

OfType<TResult>(IEnumerable)

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

AsParallel(IEnumerable)

Umožňuje paralelizaci dotazu.

AsQueryable(IEnumerable)

Převede objekt na IEnumerableIQueryable.

Platí pro