OracleDataReader Klas

Definitie

Biedt een manier om een gegevensrijen van alleen-doorstuurgegevens uit een gegevensbron te lezen. Deze klasse kan niet worden overgenomen.

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
Overname
OracleDataReader
Overname
Implementeringen

Voorbeelden

In het volgende voorbeeld wordt een OracleConnection, een OracleCommanden een OracleDataReader. In het voorbeeld worden de gegevens gelezen en naar de console geschreven. Ten slotte sluit het voorbeeld de OracleDataReader, en vervolgens de 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

Opmerkingen

Als u een OracleDataReaderobject wilt maken, moet u de ExecuteReader methode van het OracleCommand object aanroepen in plaats van rechtstreeks een constructor te gebruiken.

Wijzigingen die zijn aangebracht in een resultatenset door een ander proces of een andere thread terwijl gegevens worden gelezen, zijn mogelijk zichtbaar voor de gebruiker van de OracleDataReader.

IsClosed en RecordsAffected zijn de enige eigenschappen die u kunt aanroepen nadat de OracleDataReader is gesloten. In sommige gevallen moet u bellen Close voordat u kunt bellen RecordsAffected.

Meer dan één OracleDataReader kan op elk gewenst moment geopend zijn.

In de volgende twee Visual Basic voorbeelden ziet u hoe u een OracleDataReader gebruikt om een Oracle REF CURSOR op te halen. In deze voorbeelden worden tabellen gebruikt die zijn gedefinieerd in het Oracle Scott/Tiger-schema en waarvoor het volgende PL/SQL-pakket en de pakkettekst zijn vereist. U moet deze maken op uw server om de voorbeelden te kunnen gebruiken.

Maak het volgende Oracle-pakket op de Oracle-server.

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

Maak de volgende Oracle-pakketbody op de Oracle-server.

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

In dit Visual Basic voorbeeld wordt een PL/SQL-opgeslagen procedure uitgevoerd die een parameter REF CURSOR retourneert en de waarde leest als een 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

In dit Visual Basic voorbeeld wordt een pl/SQL-opgeslagen procedure uitgevoerd die twee REF CURSOR parameters retourneert en de waarden leest met behulp van een 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

In dit C#-voorbeeld wordt een Oracle-tabel gemaakt en geladen met gegevens. U moet dit voorbeeld uitvoeren voordat u het volgende voorbeeld uitvoert. Dit laat zien hoe u OracleDataReader toegang krijgt tot de gegevens met behulp van OracleType-structuren.

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

In dit C#-voorbeeld wordt een OracleDataReader toegang tot gegevens gebruikt en worden verschillende OracleType structuren gebruikt om de gegevens weer te geven.

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

Eigenschappen

Name Description
Depth

Hiermee wordt een waarde opgehaald die de diepte van nesten voor de huidige rij aangeeft.

FieldCount

Hiermee haalt u het aantal kolommen in de huidige rij op.

HasRows

Hiermee wordt een waarde opgehaald die aangeeft of deze OracleDataReader een of meer rijen bevat.

IsClosed

Geeft aan of de OracleDataReader gesloten is.

Item[Int32]

Hiermee haalt u de waarde van de opgegeven kolom op in de systeemeigen indeling op basis van de kolomordinaal.

Item[String]

Hiermee haalt u de waarde van de opgegeven kolom op in de systeemeigen indeling op basis van de kolomnaam.

RecordsAffected

Hiermee haalt u het aantal rijen op dat is gewijzigd, ingevoegd of verwijderd door de SQL-instructie uit te voeren.

VisibleFieldCount

Hiermee haalt u het aantal velden op DbDataReader dat niet verborgen is.

(Overgenomen van DbDataReader)

Methoden

Name Description
Close()

Hiermee sluit u het OracleDataReader object.

CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
Dispose()

Releases van de resources die door dit object worden gebruikt.

Dispose()

Alle resources die door het huidige exemplaar van de DbDataReader klasse worden gebruikt, worden vrijgegeven.

(Overgenomen van DbDataReader)
Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de DbDataReader beheerde resources en brengt eventueel de beheerde resources vrij.

(Overgenomen van DbDataReader)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetBoolean(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een Booleaanse waarde.

GetByte(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een byte.

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

Leest een stroom van bytes van de opgegeven kolom offset in de buffer als een matrix, beginnend bij de opgegeven buffer offset.

GetChar(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een teken.

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

Hiermee leest u een stroom tekens van de opgegeven kolom offset in de buffer als matrix, te beginnen bij de opgegeven buffer offset.

GetData(Int32)

Retourneert een IDataReader voor de opgegeven kolomordinaal.

GetData(Int32)

Retourneert een geneste gegevenslezer voor de aangevraagde kolom.

(Overgenomen van DbDataReader)
GetDataTypeName(Int32)

Hiermee haalt u de naam van het brongegevenstype op.

GetDateTime(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een DateTime object.

GetDbDataReader(Int32)

Retourneert een DbDataReader object voor de aangevraagde kolomordinaal die kan worden overschreven met een providerspecifieke implementatie.

(Overgenomen van DbDataReader)
GetDecimal(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een Decimal object.

GetDouble(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een drijvendekommagetal met dubbele precisie.

GetEnumerator()

Retourneert een IEnumerator die kan worden gebruikt om de rijen in de gegevenslezer te doorlopen.

GetFieldType(Int32)

Hiermee haalt u het Type gegevenstype van het object op.

GetFieldValue<T>(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als het aangevraagde type.

(Overgenomen van DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Asynchroon haalt de waarde van de opgegeven kolom op als het aangevraagde type.

(Overgenomen van DbDataReader)
GetFieldValueAsync<T>(Int32)

Asynchroon haalt de waarde van de opgegeven kolom op als het aangevraagde type.

(Overgenomen van DbDataReader)
GetFloat(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een drijvendekommagetal met één precisie.

GetGuid(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als guid (globally-unique identifier).

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetInt16(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een 16-bits geheel getal dat is ondertekend.

GetInt32(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een 32-bits geheel getal dat is ondertekend.

GetInt64(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een 64-bits geheel getal dat is ondertekend.

GetLifetimeService()

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetName(Int32)

Hiermee haalt u de naam van de opgegeven kolom op.

GetOracleBFile(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleBFile object.

GetOracleBinary(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleBinary object.

GetOracleDateTime(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleDateTime object.

GetOracleLob(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleLob object.

GetOracleMonthSpan(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleMonthSpan object.

GetOracleNumber(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleNumber object.

GetOracleString(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleString object.

GetOracleTimeSpan(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een OracleTimeSpan object.

GetOracleValue(Int32)

Hiermee haalt u de waarde van de kolom op in de opgegeven rangschikt in de Oracle-indeling.

GetOracleValues(Object[])

Hiermee haalt u alle kenmerkkolommen op in de huidige rij in Oracle-indeling.

GetOrdinal(String)

Hiermee haalt u de kolomordinaal op, op basis van de naam van de kolom.

GetProviderSpecificFieldType(Int32)

Hiermee wordt een Object weergave opgehaald van het specifieke veldtype van de onderliggende provider.

GetProviderSpecificValue(Int32)

Hiermee wordt een Object weergave opgehaald van het specifieke veldtype van de onderliggende provider.

GetProviderSpecificValues(Object[])

Hiermee haalt u een matrix van objecten op die een weergave zijn van de specifieke waarden van de onderliggende provider.

GetSchemaTable()

Retourneert een DataTable die de kolommetagegevens van OracleDataReader beschrijft.

GetStream(Int32)

Hiermee haalt u een stroom op om gegevens op te halen uit de opgegeven kolom.

(Overgenomen van DbDataReader)
GetString(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een tekenreeks.

GetTextReader(Int32)

Hiermee haalt u een tekstlezer op om gegevens op te halen uit de kolom.

(Overgenomen van DbDataReader)
GetTimeSpan(Int32)

Hiermee haalt u de waarde van de opgegeven kolom op als een System.TimeSpan.

GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
GetValue(Int32)

Hiermee haalt u de waarde van de kolom op in de opgegeven rangschikk in de systeemeigen indeling.

GetValues(Object[])

Hiermee wordt een matrix met objecten gevuld met de kolomwaarden van de huidige rij.

InitializeLifetimeService()

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
IsDBNull(Int32)

Hiermee wordt een waarde opgehaald die aangeeft of de kolom niet-bestaande of ontbrekende waarden bevat.

IsDBNullAsync(Int32, CancellationToken)

Asynchroon krijgt een waarde die aangeeft of de kolom niet-bestaande of ontbrekende waarden bevat.

(Overgenomen van DbDataReader)
IsDBNullAsync(Int32)

Asynchroon krijgt een waarde die aangeeft of de kolom niet-bestaande of ontbrekende waarden bevat.

(Overgenomen van DbDataReader)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
NextResult()

OracleDataReader Hiermee gaat u naar het volgende resultaat.

NextResultAsync()

De lezer wordt asynchroon naar het volgende resultaat doorgevroegd bij het lezen van de resultaten van een batch met instructies.

(Overgenomen van DbDataReader)
NextResultAsync(CancellationToken)

De lezer wordt asynchroon naar het volgende resultaat doorgevroegd bij het lezen van de resultaten van een batch met instructies.

(Overgenomen van DbDataReader)
Read()

Hiermee gaat u naar OracleDataReader de volgende record.

ReadAsync()

De lezer wordt asynchroon doorgezet naar de volgende record in een resultatenset.

(Overgenomen van DbDataReader)
ReadAsync(CancellationToken)

De lezer wordt asynchroon doorgezet naar de volgende record in een resultatenset.

(Overgenomen van DbDataReader)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)

Expliciete interface-implementaties

Name Description
IDataRecord.GetData(Int32)

Zie voor een beschrijving van dit lid GetData(Int32).

(Overgenomen van DbDataReader)
IEnumerable.GetEnumerator()

Retourneert een enumerator die door een verzameling wordt herhaald.

Extensiemethoden

Name Description
AsParallel(IEnumerable)

Hiermee schakelt u parallelle uitvoering van een query in.

AsQueryable(IEnumerable)

Converteert een IEnumerable naar een IQueryable.

CanGetColumnSchema(DbDataReader)

Hiermee wordt een waarde opgehaald die aangeeft of een DbDataReader kolomschema kan worden opgehaald.

Cast<TResult>(IEnumerable)

Cast de elementen van een IEnumerable naar het opgegeven type.

GetColumnSchema(DbDataReader)

Hiermee haalt u het kolomschema (DbColumn verzameling) voor een DbDataReader.

OfType<TResult>(IEnumerable)

Hiermee filtert u de elementen van een IEnumerable op basis van een opgegeven type.

Van toepassing op