OracleDataReader Klasse
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Bietet eine Möglichkeit zum Lesen eines Vorwärtsdatenstroms von Datenzeilen aus einer Datenquelle. Diese Klasse kann nicht vererbt werden.
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
- Vererbung
- Vererbung
- Implementiert
Beispiele
Im folgenden Beispiel wird ein , ein OracleConnectionOracleCommandund ein OracleDataReader. Im Beispiel werden die Daten gelesen und in die Konsole geschrieben. Schließlich schließt das Beispiel den OracleDataReader, dann die 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
Hinweise
Zum Erstellen eines OracleDataReaderObjekts müssen Sie die ExecuteReader Methode des OracleCommand Objekts aufrufen, anstatt direkt einen Konstruktor zu verwenden.
Änderungen, die an einem Resultset durch einen anderen Prozess oder Thread vorgenommen wurden, während Daten gelesen werden, sind möglicherweise für den Benutzer der OracleDataReader.
IsClosed und RecordsAffected sind die einzigen Eigenschaften, die Sie nach dem OracleDataReader Schließen aufrufen können. In einigen Fällen müssen Sie anrufen Close , bevor Sie anrufen RecordsAffectedkönnen.
OracleDataReader Mehrere können jederzeit geöffnet werden.
Die folgenden beiden Visual Basic Beispiele veranschaulichen die Verwendung eines OracleDataReader zum Abrufen eines Oracle REF CURSOR. In diesen Beispielen werden Tabellen verwendet, die im Oracle Scott/Tiger-Schema definiert sind und den folgenden PL/SQL-Paket- und Pakettext erfordern. Sie müssen diese auf Ihrem Server erstellen, um die Beispiele zu verwenden.
Erstellen Sie das folgende Oracle-Paket auf dem 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;
/
Erstellen Sie den folgenden Oracle-Paketkörper auf dem 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 diesem Visual Basic Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die einen REF CURSOR-Parameter zurückgibt und den Wert als OracleDataReader liest.
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 diesem Visual Basic Beispiel wird eine gespeicherte PL/SQL-Prozedur ausgeführt, die zwei REF CURSOR-Parameter zurückgibt und die Werte mithilfe eines OracleDataReader liest.
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 diesem C#-Beispiel wird eine Oracle-Tabelle erstellt und mit Daten geladen. Sie müssen dieses Beispiel vor dem Ausführen des nachfolgenden Beispiels ausführen, das die Verwendung eines OracleDataReader Zugriffs auf die Daten mithilfe von OracleType-Strukturen veranschaulicht.
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 diesem C#-Beispiel wird ein OracleDataReader Beispiel für den Zugriff auf Daten verwendet, und es werden mehrere OracleType Strukturen zum Anzeigen der Daten verwendet.
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();
}
}
Eigenschaften
| Name | Beschreibung |
|---|---|
| Depth |
Ruft einen Wert ab, der die Tiefe der Schachtelung für die aktuelle Zeile angibt. |
| FieldCount |
Ruft die Anzahl der Spalten in der aktuellen Zeile ab. |
| HasRows |
Ruft einen Wert ab, der angibt, ob die OracleDataReader ein oder mehrere Zeilen enthält. |
| IsClosed |
Gibt an, ob die OracleDataReader Zeichenfolge geschlossen ist. |
| Item[Int32] |
Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, wenn die Spalte Ordnungszahl angegeben ist. |
| Item[String] |
Ruft den Wert der angegebenen Spalte im systemeigenen Format ab, das den Spaltennamen enthält. |
| RecordsAffected |
Ruft die Anzahl der Zeilen geändert, eingefügt oder gelöscht durch Ausführung der SQL-Anweisung ab. |
| VisibleFieldCount |
Ruft die Anzahl der Felder in dem DbDataReader nicht ausgeblendeten ab. (Geerbt von DbDataReader) |
Methoden
| Name | Beschreibung |
|---|---|
| Close() |
Schließt das OracleDataReader Objekt. |
| CreateObjRef(Type) |
Erstellt ein Objekt, das alle relevanten Informationen enthält, die zum Generieren eines Proxys erforderlich sind, der für die Kommunikation mit einem Remoteobjekt verwendet wird. (Geerbt von MarshalByRefObject) |
| Dispose() |
Gibt die Ressourcen frei, die von diesem Objekt verwendet werden. |
| Dispose() |
Gibt alle Ressourcen frei, die von der aktuellen Instanz der DbDataReader Klasse verwendet werden. (Geerbt von DbDataReader) |
| Dispose(Boolean) |
Gibt die nicht verwalteten Ressourcen frei, die von den DbDataReader verwalteten Ressourcen verwendet werden, und gibt optional die verwalteten Ressourcen frei. (Geerbt von DbDataReader) |
| Equals(Object) |
Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist. (Geerbt von Object) |
| GetBoolean(Int32) |
Ruft den Wert der angegebenen Spalte als booleschen Wert ab. |
| GetByte(Int32) |
Ruft den Wert der angegebenen Spalte als Byte ab. |
| GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Liest einen Bytestrom aus dem angegebenen Spaltenoffset als Array, beginnend mit dem angegebenen Pufferoffset, in den Puffer. |
| GetChar(Int32) |
Ruft den Wert der angegebenen Spalte als Zeichen ab. |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
Liest einen Datenstrom von Zeichen aus dem angegebenen Spaltenoffset in den Puffer als Array ab dem angegebenen Pufferoffset. |
| GetData(Int32) |
Gibt einen IDataReader Wert für die angegebene Spalten-Ordnungszahl zurück. |
| GetData(Int32) |
Gibt einen geschachtelten Datenleser für die angeforderte Spalte zurück. (Geerbt von DbDataReader) |
| GetDataTypeName(Int32) |
Ruft den Namen des Quelldatentyps ab. |
| GetDateTime(Int32) |
Ruft den Wert der angegebenen Spalte als |
| GetDbDataReader(Int32) |
Gibt ein DbDataReader Objekt für die angeforderte Spalten-Ordnungszahl zurück, die mit einer anbieterspezifischen Implementierung überschrieben werden kann. (Geerbt von DbDataReader) |
| GetDecimal(Int32) |
Ruft den Wert der angegebenen Spalte als |
| GetDouble(Int32) |
Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit doppelter Genauigkeit ab. |
| GetEnumerator() |
Gibt einen IEnumerator Wert zurück, der zum Durchlaufen der Zeilen im Datenleser verwendet werden kann. |
| GetFieldType(Int32) |
Ruft den Type Datentyp des Objekts ab. |
| GetFieldValue<T>(Int32) |
Ruft den Wert der angegebenen Spalte als angeforderten Typ ab. (Geerbt von DbDataReader) |
| GetFieldValueAsync<T>(Int32, CancellationToken) |
Ruft asynchron den Wert der angegebenen Spalte als angeforderten Typ ab. (Geerbt von DbDataReader) |
| GetFieldValueAsync<T>(Int32) |
Ruft asynchron den Wert der angegebenen Spalte als angeforderten Typ ab. (Geerbt von DbDataReader) |
| GetFloat(Int32) |
Ruft den Wert der angegebenen Spalte als Gleitkommazahl mit einfacher Genauigkeit ab. |
| GetGuid(Int32) |
Ruft den Wert der angegebenen Spalte als GUID (Globally Unique Identifier) ab. |
| GetHashCode() |
Dient als Standardhashfunktion. (Geerbt von Object) |
| GetInt16(Int32) |
Ruft den Wert der angegebenen Spalte als eine 16-Bit-ganzzahlige Vorzeichen ab. |
| GetInt32(Int32) |
Ruft den Wert der angegebenen Spalte als 32-Bit-ganzzahlige Vorzeichen ab. |
| GetInt64(Int32) |
Ruft den Wert der angegebenen Spalte als ganze 64-Bit-Ganzzahl ab. |
| GetLifetimeService() |
Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinie für diese Instanz steuert. (Geerbt von MarshalByRefObject) |
| GetName(Int32) |
Ruft den Namen der angegebenen Spalte ab. |
| GetOracleBFile(Int32) |
Ruft den Wert der angegebenen Spalte als OracleBFile Objekt ab. |
| GetOracleBinary(Int32) |
Ruft den Wert der angegebenen Spalte als OracleBinary Objekt ab. |
| GetOracleDateTime(Int32) |
Ruft den Wert der angegebenen Spalte als OracleDateTime Objekt ab. |
| GetOracleLob(Int32) |
Ruft den Wert der angegebenen Spalte als OracleLob Objekt ab. |
| GetOracleMonthSpan(Int32) |
Ruft den Wert der angegebenen Spalte als OracleMonthSpan Objekt ab. |
| GetOracleNumber(Int32) |
Ruft den Wert der angegebenen Spalte als OracleNumber Objekt ab. |
| GetOracleString(Int32) |
Ruft den Wert der angegebenen Spalte als OracleString Objekt ab. |
| GetOracleTimeSpan(Int32) |
Ruft den Wert der angegebenen Spalte als OracleTimeSpan Objekt ab. |
| GetOracleValue(Int32) |
Ruft den Wert der Spalte am angegebenen Ordinal im Oracle-Format ab. |
| GetOracleValues(Object[]) |
Ruft alle Attributspalten in der aktuellen Zeile im Oracle-Format ab. |
| GetOrdinal(String) |
Ruft die Spalten-Ordnungszahl ab, wobei der Name der Spalte angegeben ist. |
| GetProviderSpecificFieldType(Int32) |
Ruft eine |
| GetProviderSpecificValue(Int32) |
Ruft eine |
| GetProviderSpecificValues(Object[]) |
Ruft ein Array von Objekten ab, die eine Darstellung der zugrunde liegenden anbieterspezifischen Werte sind. |
| GetSchemaTable() |
Gibt einen DataTable Wert zurück, der die Spaltenmetadaten von OracleDataReader beschreibt. |
| GetStream(Int32) |
Ruft einen Datenstrom ab, um Daten aus der angegebenen Spalte abzurufen. (Geerbt von DbDataReader) |
| GetString(Int32) |
Ruft den Wert der angegebenen Spalte als Zeichenfolge ab. |
| GetTextReader(Int32) |
Ruft einen Textleser ab, um Daten aus der Spalte abzurufen. (Geerbt von DbDataReader) |
| GetTimeSpan(Int32) |
Ruft den Wert der angegebenen Spalte als ein |
| GetType() |
Ruft die Type der aktuellen Instanz ab. (Geerbt von Object) |
| GetValue(Int32) |
Ruft den Wert der Spalte am angegebenen Ordinal im systemeigenen Format ab. |
| GetValues(Object[]) |
Füllt ein Array von Objekten mit den Spaltenwerten der aktuellen Zeile auf. |
| InitializeLifetimeService() |
Ruft ein Lebensdauerdienstobjekt ab, um die Lebensdauerrichtlinie für diese Instanz zu steuern. (Geerbt von MarshalByRefObject) |
| IsDBNull(Int32) |
Ruft einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält. |
| IsDBNullAsync(Int32, CancellationToken) |
Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält. (Geerbt von DbDataReader) |
| IsDBNullAsync(Int32) |
Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält. (Geerbt von DbDataReader) |
| MemberwiseClone() |
Erstellt eine flache Kopie der aktuellen Object. (Geerbt von Object) |
| MemberwiseClone(Boolean) |
Erstellt eine flache Kopie des aktuellen MarshalByRefObject Objekts. (Geerbt von MarshalByRefObject) |
| NextResult() |
Wechselt zum OracleDataReader nächsten Ergebnis. |
| NextResultAsync() |
Wechselt den Leser asynchron zum nächsten Ergebnis, wenn die Ergebnisse einer Reihe von Anweisungen gelesen werden. (Geerbt von DbDataReader) |
| NextResultAsync(CancellationToken) |
Wechselt den Leser asynchron zum nächsten Ergebnis, wenn die Ergebnisse einer Reihe von Anweisungen gelesen werden. (Geerbt von DbDataReader) |
| Read() |
Wechselt zum OracleDataReader nächsten Datensatz. |
| ReadAsync() |
Wechselt den Leser asynchron zum nächsten Datensatz in einem Resultset. (Geerbt von DbDataReader) |
| ReadAsync(CancellationToken) |
Wechselt den Leser asynchron zum nächsten Datensatz in einem Resultset. (Geerbt von DbDataReader) |
| ToString() |
Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt. (Geerbt von Object) |
Explizite Schnittstellenimplementierungen
| Name | Beschreibung |
|---|---|
| IDataRecord.GetData(Int32) |
Eine Beschreibung dieses Mitglieds finden Sie unter GetData(Int32). (Geerbt von DbDataReader) |
| IEnumerable.GetEnumerator() |
Gibt einen Enumerator zurück, der eine Auflistung durchläuft. |
Erweiterungsmethoden
| Name | Beschreibung |
|---|---|
| AsParallel(IEnumerable) |
Aktiviert die Parallelisierung einer Abfrage. |
| AsQueryable(IEnumerable) |
Wandelt eine IEnumerable in eine IQueryableum. |
| CanGetColumnSchema(DbDataReader) |
Ruft einen Wert ab, der angibt, ob ein DbDataReader Spaltenschema abgerufen werden kann. |
| Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um. |
| GetColumnSchema(DbDataReader) |
Ruft das Spaltenschema (DbColumn Auflistung) für ein DbDataReader. |
| OfType<TResult>(IEnumerable) |
Filtert die Elemente einer IEnumerable basierend auf einem angegebenen Typ. |