Nyelv

OracleDataReader Osztály

Definíció

Lehetővé teszi, hogy egy adatforrásból csak előre beolvassa az adatsorokat. Ez az osztály nem örökölhető.

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
Öröklődés
OracleDataReader
Öröklődés
Megvalósítás

Példák

Az alábbi példa létrehoz egy OracleConnection, egy OracleCommandés egy OracleDataReader. A példa végigolvassa az adatokat, és kiírja a konzolra. Végül a példa bezárja a OracleDataReader, majd a 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

Megjegyzések

Az OracleDataReaderobjektum létrehozásához nem ExecuteReader közvetlenül konstruktort, hanem az OracleCommand objektum metódusát kell meghívnia.

Egy eredményhalmazon egy másik folyamat vagy szál által az adatok olvasása közben végzett módosítások láthatók lehetnek a OracleDataReaderfelhasználó számára.

IsClosed és RecordsAffected ezek az egyetlen tulajdonságok, amelyeket a OracleDataReader lezárás után hívhat meg. Bizonyos esetekben a hívás Closeelőtt fel kell hívniaRecordsAffected.

Egyszerre több is OracleDataReader megnyitható.

Az alábbi két Visual Basic példa bemutatja, hogyan használható egy OracleDataReader oracle REF CURSOR lekéréséhez. Ezek a példák olyan táblákat használnak, amelyek az Oracle Scott/Tiger sémában vannak definiálva, és a következő PL/SQL-csomagra és csomagtörzsre van szükségük. Ezeket a példák használatához létre kell hoznia a kiszolgálón.

Hozza létre a következő Oracle-csomagot az Oracle-kiszolgálón.

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

Hozza létre a következő Oracle-csomag törzsét az Oracle-kiszolgálón.

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

Ez a Visual Basic példa egy PL/SQL tárolt eljárást hajt végre, amely egy REF CURSOR paramétert ad vissza, és OracleDataReader értékként olvassa be az értéket.

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

Ez a Visual Basic példa egy PL/SQL tárolt eljárást hajt végre, amely két REF CURSOR paramétert ad vissza, és egy OracleDataReader használatával olvassa be az értékeket.

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

Ez a C#-példa létrehoz egy Oracle-táblát, és betölti az adatokat. Ezt a példát a következő példa futtatása előtt kell futtatnia, amely azt mutatja be, hogy oracleType-struktúrák OracleDataReader használatával kell hozzáférni az adatokhoz.

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

Ez a C#-példa egy OracleDataReader adatelérési lehetőséget használ, és több OracleType struktúrát használ az adatok megjelenítéséhez.

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

Tulajdonságok

Name Description
Depth

Az aktuális sor beágyazásának mélységét jelző értéket kap.

FieldCount

Lekéri az aktuális sor oszlopainak számát.

HasRows

Beolvas egy értéket, amely jelzi, hogy a OracleDataReader sor egy vagy több sort tartalmaz-e.

IsClosed

Azt jelzi, hogy a OracleDataReader fájl bezárva van-e.

Item[Int32]

A megadott oszlop értékét a natív formátumban kapja meg az oszlop sorszáma alapján.

Item[String]

Lekéri a megadott oszlop értékét natív formátumban az oszlopnév alapján.

RecordsAffected

Lekéri az SQL-utasítás végrehajtásával módosított, beszúrt vagy törölt sorok számát.

VisibleFieldCount

A nem rejtett mezők DbDataReader számát adja meg.

(Öröklődés forrása DbDataReader)

Metódusok

Name Description
Close()

Bezárja az OracleDataReader objektumot.

CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
Dispose()

Felszabadítja az objektum által használt erőforrásokat.

Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja DbDataReader .

(Öröklődés forrása DbDataReader)
Dispose(Boolean)

Felszabadítja a felügyelt erőforrások által DbDataReader használt nem felügyelt erőforrásokat, és opcionálisan felszabadítja a felügyelt erőforrásokat.

(Öröklődés forrása DbDataReader)
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetBoolean(Int32)

A megadott oszlop értékét logikai értékként kapja meg.

GetByte(Int32)

A megadott oszlop értékét bájtként adja meg.

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

Beolvassa a megadott oszlopeltolásból származó bájtokból álló adatfolyamot tömbként a pufferbe, a megadott puffereltolástól kezdve.

GetChar(Int32)

A megadott oszlop értékét adja meg karakterként.

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

Beolvassa a megadott oszlop eltolásából származó karakterfolyamot tömbként a pufferbe, az adott puffereltolástól kezdve.

GetData(Int32)

IDataReader A megadott oszlop sorszámát adja vissza.

GetData(Int32)

Beágyazott adatolvasót ad vissza a kért oszlophoz.

(Öröklődés forrása DbDataReader)
GetDataTypeName(Int32)

Lekéri a forrásadattípus nevét.

GetDateTime(Int32)

A megadott oszlop értékét adja meg objektumként DateTime .

GetDbDataReader(Int32)

Olyan objektumot DbDataReader ad vissza a kért oszloprendhez, amelyet felül lehet bírálni egy szolgáltatóspecifikus implementációval.

(Öröklődés forrása DbDataReader)
GetDecimal(Int32)

A megadott oszlop értékét adja meg objektumként Decimal .

GetDouble(Int32)

A megadott oszlop értékét dupla pontosságú lebegőpontos számként adja meg.

GetEnumerator()

Olyan értéket IEnumerator ad vissza, amely az adatolvasó sorain keresztüli iterálásra használható.

GetFieldType(Int32)

Lekéri az Type objektum adattípusát.

GetFieldValue<T>(Int32)

A megadott oszlop értékét kéri le a kért típusként.

(Öröklődés forrása DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Aszinkron módon a megadott oszlop értékét kéri le a kért típusként.

(Öröklődés forrása DbDataReader)
GetFieldValueAsync<T>(Int32)

Aszinkron módon a megadott oszlop értékét kéri le a kért típusként.

(Öröklődés forrása DbDataReader)
GetFloat(Int32)

A megadott oszlop értékét egy pontosságú lebegőpontos számként adja meg.

GetGuid(Int32)

A megadott oszlop értékét globálisan egyedi azonosítóként (GUID) kapja meg.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetInt16(Int32)

A megadott oszlop értékét 16 bites aláírt egész számként kapja meg.

GetInt32(Int32)

A megadott oszlop értékét 32 bites aláírt egész számként kapja meg.

GetInt64(Int32)

A megadott oszlop értékét 64 bites aláírt egész számként kapja meg.

GetLifetimeService()
Elavult.

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetName(Int32)

Lekéri a megadott oszlop nevét.

GetOracleBFile(Int32)

A megadott oszlop értékét adja meg objektumként OracleBFile .

GetOracleBinary(Int32)

A megadott oszlop értékét adja meg objektumként OracleBinary .

GetOracleDateTime(Int32)

A megadott oszlop értékét adja meg objektumként OracleDateTime .

GetOracleLob(Int32)

A megadott oszlop értékét adja meg objektumként OracleLob .

GetOracleMonthSpan(Int32)

A megadott oszlop értékét adja meg objektumként OracleMonthSpan .

GetOracleNumber(Int32)

A megadott oszlop értékét adja meg objektumként OracleNumber .

GetOracleString(Int32)

A megadott oszlop értékét adja meg objektumként OracleString .

GetOracleTimeSpan(Int32)

A megadott oszlop értékét adja meg objektumként OracleTimeSpan .

GetOracleValue(Int32)

Lekéri az oszlop értékét a megadott sorszámon az Oracle formátumában.

GetOracleValues(Object[])

Az aktuális sor összes attribútumoszlopát Oracle formátumban kapja meg.

GetOrdinal(String)

Lekéri az oszlop sorszámát az oszlop nevének megadva.

GetProviderSpecificFieldType(Int32)

Object Lekéri a mögöttes szolgáltató adott mezőtípusának ábrázolását.

GetProviderSpecificValue(Int32)

Object Lekéri a mögöttes szolgáltató adott mezőtípusának ábrázolását.

GetProviderSpecificValues(Object[])

Olyan objektumtömböt kap, amely a mögöttes szolgáltató specifikus értékeit jeleníti meg.

GetSchemaTable()

DataTable Az OracleDataReader oszlop metaadatait leíró értéket ad vissza.

GetStream(Int32)

Lekéri a streamet, amely adatokat kér le a megadott oszlopból.

(Öröklődés forrása DbDataReader)
GetString(Int32)

A megadott oszlop értékét sztringként adja meg.

GetTextReader(Int32)

Lekéri a szövegolvasót az oszlop adatainak lekéréséhez.

(Öröklődés forrása DbDataReader)
GetTimeSpan(Int32)

Lekéri a megadott oszlop System.TimeSpanértékét .

GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
GetValue(Int32)

Lekéri az oszlop értékét a megadott sorszámon a natív formátumában.

GetValues(Object[])

Egy objektumtömböt tölt fel az aktuális sor oszlopértékeivel.

InitializeLifetimeService()
Elavult.

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
IsDBNull(Int32)

Beolvas egy értéket, amely jelzi, hogy az oszlop nem létező vagy hiányzó értékeket tartalmaz-e.

IsDBNullAsync(Int32, CancellationToken)

Aszinkron módon olyan értéket kap, amely jelzi, hogy az oszlop nem létező vagy hiányzó értékeket tartalmaz-e.

(Öröklődés forrása DbDataReader)
IsDBNullAsync(Int32)

Aszinkron módon olyan értéket kap, amely jelzi, hogy az oszlop nem létező vagy hiányzó értékeket tartalmaz-e.

(Öröklődés forrása DbDataReader)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
NextResult()

OracleDataReader A következő eredményre lép.

NextResultAsync()

Az aszinkron módon a következő eredményre viszi az olvasót egy utasításköteg eredményeinek olvasásakor.

(Öröklődés forrása DbDataReader)
NextResultAsync(CancellationToken)

Az aszinkron módon a következő eredményre viszi az olvasót egy utasításköteg eredményeinek olvasásakor.

(Öröklődés forrása DbDataReader)
Read()

OracleDataReader A következő rekordra lép.

ReadAsync()

Aszinkron módon egy eredményhalmaz következő rekordja felé viszi az olvasót.

(Öröklődés forrása DbDataReader)
ReadAsync(CancellationToken)

Aszinkron módon egy eredményhalmaz következő rekordja felé viszi az olvasót.

(Öröklődés forrása DbDataReader)
ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)

Explicit interfész-implementációk

Name Description
IDataRecord.GetData(Int32)

Ennek a tagnak a leírását lásd GetData(Int32): .

(Öröklődés forrása DbDataReader)
IEnumerable.GetEnumerator()

Egy gyűjteményen keresztül iteráló enumerátort ad vissza.

Bővítő metódusok

Name Description
AsParallel(IEnumerable)

Lehetővé teszi a lekérdezés párhuzamosítását.

AsQueryable(IEnumerable)

Átalakítja az egyiket IEnumerableIQueryable.

CanGetColumnSchema(DbDataReader)

Olyan értéket kap, amely jelzi, hogy egy DbDataReader oszlopséma lekérhető-e.

Cast<TResult>(IEnumerable)

Egy elem elemeit IEnumerable a megadott típusra veti.

GetColumnSchema(DbDataReader)

Lekéri az oszlopséma (DbColumn gyűjtemény) egy DbDataReader.

OfType<TResult>(IEnumerable)

Egy adott típus alapján szűri IEnumerable egy adott elem elemeit.

A következőre érvényes: