Sdílet prostřednictvím


OracleDataReader Třída

Definice

Poskytuje způsob čtení datového proudu řádků dat pouze dopředného 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, a OracleCommandOracleDataReader. Příklad přečte data a zapíše 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 ExecuteReader metodu 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 objektu OracleDataReader.

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

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

Následující dva příklady jazyka Visual Basic ukazují, jak použít objekt OracleDataReader k načtení 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 příklady použít, musíte je vytvořit na serveru.

Create na serveru Oracle 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;  
/  

Create následující text balíčku Oracle na serveru 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 č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 OracleDataReader C# používá pro přístup k datům objekt 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, jestli OracleDataReader je uzavřená.

Item[Int32]

Získá hodnotu zadaného sloupce v jeho nativním formátu zadanou pořadovou řadu 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čet polí v polích DbDataReader , které nejsou skryté.

(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 používané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 nástrojem 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)

Přeč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.

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 ctě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 již byla předána cancellationToken. Výjimky vyvolané nástrojem GetColumnSchema(DbDataReader) budou sděleny prostřednictvím vrácené vlastnosti Výjimka úkolu.

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

Vrátí hodnotu IDataReader pro zadanou řadovou řadu 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žadovanou řadovou řadu sloupců, kterou 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, 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í 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é celé číslo se signoum sadou.

GetInt32(Int32)

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

GetInt64(Int32)

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

GetLifetimeService()
Zastaralé.

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 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 ordinálu 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á řadový sloupec vzhledem k názvu sloupce.

GetProviderSpecificFieldType(Int32)

Získá objekt Object , který je reprezentací základního typu pole specifického zprostředkovatele.

GetProviderSpecificValue(Int32)

Získá objekt Object , který je reprezentací základního typu pole specifického zprostředkovatele.

GetProviderSpecificValues(Object[])

Získá pole objektů, které jsou reprezentací základní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 ctěna. Výchozí implementace vyvolá synchronní GetSchemaTable() volání a vrátí dokončenou úlohu. Výchozí implementace vrátí zrušenou úlohu, pokud již byla předána cancellationToken. Výjimky vyvolané nástrojem GetSchemaTable() budou sděleny prostřednictvím vrácené vlastnosti 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()

Získá aktuální Type instanci.

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

Získá hodnotu sloupce v zadaném ordinálu v jeho nativním formátu.

GetValues(Object[])

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

InitializeLifetimeService()
Zastaralé.

Získá objekt služby životnosti, 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, 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 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()

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

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

Asynchronně posune č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ě posune čtenáře na další záznam v sadě výsledků.

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

Asynchronně posune č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í

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 kolekce) pro DbDataReader.

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