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 ein Verfahren für das Lesen eines Vorwärtsstreams 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 werden ein OracleConnection, ein OracleCommandund ein OracleDataReadererstellt. Im Beispiel werden die Daten gelesen und in die Konsole geschrieben. Schließlich schließt das Beispiel die OracleDataReader- und 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
Um eine OracleDataReaderzu erstellen, müssen Sie die ExecuteReader -Methode des OracleCommand -Objekts aufrufen, anstatt direkt einen Konstruktor zu verwenden.
Änderungen, die von einem anderen Prozess oder Thread an einem Resultset vorgenommen werden, während Daten gelesen werden, können für den Benutzer des OracleDataReadersichtbar sein.
IsClosed und RecordsAffected sind die einzigen Eigenschaften, die nach dem Schließen von OracleDataReader aufgerufen werden können. In einigen Fällen müssen Sie aufrufen Close , bevor Sie aufrufen RecordsAffectedkönnen.
OracleDataReader Mehrere können jederzeit geöffnet sein.
Die folgenden beiden Visual Basic-Beispiele veranschaulichen, wie ein OracleDataReader verwendet wird, um ein Oracle REF CURSOR
abzurufen. 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 liest 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
Dieses Visual Basic-Beispiel führt eine gespeicherte PL/SQL-Prozedur aus, die zwei REF CURSOR
Parameter zurückgibt, und liest die Werte mithilfe eines 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 diesem C#-Beispiel wird eine Oracle-Tabelle erstellt und mit Daten geladen. Sie müssen dieses Beispiel ausführen, bevor Sie das nachfolgende Beispiel ausführen, in dem die Verwendung eines OracleDataReader für den Zugriff auf die Daten mithilfe von OracleType-Strukturen veranschaulicht wird.
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 verwendet, um auf Daten zuzugreifen, 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
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 OracleDataReader eine oder mehrere Zeilen enthält. |
IsClosed |
Gibt an, ob OracleDataReader geschlossen ist. |
Item[Int32] |
Ruft bei angegebener Spaltenordnungszahl den Wert der angegebenen Spalte im systemeigenen Format ab. |
Item[String] |
Ruft bei angegebenem Spaltennamen den Wert der angegebenen Spalte im systemeigenen Format ab. |
RecordsAffected |
Ruft die Anzahl der durch die Ausführung der SQL-Anweisung geänderten, eingefügten oder gelöschten Zeilen ab. |
VisibleFieldCount |
Ruft die Anzahl der nicht ausgeblendeten Felder im DbDataReader ab. (Geerbt von DbDataReader) |
Methoden
Close() |
Schließt das OracleDataReader-Objekt. |
CloseAsync() |
Schließt das DbDataReader-Objekt asynchron (Geerbt von DbDataReader) |
CreateObjRef(Type) |
Erstellt ein Objekt mit allen relevanten Informationen, die zum Generieren eines Proxys für die Kommunikation mit einem Remoteobjekt erforderlich sind. (Geerbt von MarshalByRefObject) |
Dispose() |
Gibt die vom Objekt verwendeten Ressourcen frei. |
Dispose() |
Gibt alle von der aktuellen Instanz der DbDataReader-Klasse verwendeten Ressourcen frei. (Geerbt von DbDataReader) |
Dispose(Boolean) |
Gibt die von DbDataReader verwendeten nicht verwalteten Ressourcen und optional die verwalteten Ressourcen frei. (Geerbt von DbDataReader) |
DisposeAsync() |
Gibt alle von der aktuellen Instanz der DbDataReader-Klasse verwendeten Ressourcen asynchron 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 ein Byte ab. |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Liest einen Datenstrom aus dem angegebenen Spaltenoffset als Array in den Puffer, beginnend am angegebenen Pufferoffset. |
GetChar(Int32) |
Ruft den Wert der angegebenen Spalte als Zeichen ab. |
GetChars(Int32, Int64, Char[], Int32, Int32) |
Liest einen Zeichendatenstrom aus dem angegebenen Spaltenoffset als Array in den Puffer, beginnend am angegebenen Pufferoffset. |
GetColumnSchemaAsync(CancellationToken) |
Dies ist die asynchrone Version von GetColumnSchema(DbDataReader).
Anbieter sollten mit einer entsprechenden Implementierung überschreiben.
Das |
GetData(Int32) |
Gibt einen IDataReader für die angegebene Spaltenordnungszahl zurück. |
GetData(Int32) |
Gibt einen verschachtelten Datenreader 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 Spaltenordnungszahl zurück, das 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 zurück, mit dem die Zeilen im Datenleser durchlaufen werden können. |
GetFieldType(Int32) |
Ruft den Type ab, der den Datentyp des Objekts darstellt. |
GetFieldValue<T>(Int32) |
Ruft den Wert der angegebenen Spalte als angeforderten Typ ab. (Geerbt von DbDataReader) |
GetFieldValueAsync<T>(Int32) |
Ruft den Wert der angegebenen Spalte asynchron als angeforderten Typ ab. (Geerbt von DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
Ruft den Wert der angegebenen Spalte asynchron 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 global eindeutigen Bezeichner (Globally Unique Identifier, GUID) ab. |
GetHashCode() |
Fungiert als Standardhashfunktion. (Geerbt von Object) |
GetInt16(Int32) |
Ruft den Wert der angegebenen Spalte als 16-Bit-Ganzzahl mit Vorzeichen ab. |
GetInt32(Int32) |
Ruft den Wert der angegebenen Spalte als ganze Zahl mit Vorzeichen und einer Länge von 32 Bit ab. |
GetInt64(Int32) |
Ruft den Wert der angegebenen Spalte als 64-Bit-Ganzzahl mit Vorzeichen ab. |
GetLifetimeService() |
Veraltet.
Ruft das aktuelle Lebensdauerdienstobjekt ab, das die Lebensdauerrichtlinien 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 an der angegebenen Ordnungszahl im Oracle-Format ab. |
GetOracleValues(Object[]) |
Ruft alle Attributspalten in der aktuellen Zeile im Oracle-Format ab. |
GetOrdinal(String) |
Ruft bei angegebenem Spaltennamen die Ordnungszahl der Spalte ab. |
GetProviderSpecificFieldType(Int32) |
Ruft ein |
GetProviderSpecificValue(Int32) |
Ruft ein |
GetProviderSpecificValues(Object[]) |
Ruft ein Array von Objekten ab, die die Werte darstellen, die für den zugrunde liegenden Anbieter spezifisch sind. |
GetSchemaTable() |
Gibt eine DataTable zurück, die die Spaltenmetadaten des OracleDataReader beschreibt. |
GetSchemaTableAsync(CancellationToken) |
Dies ist die asynchrone Version von GetSchemaTable().
Anbieter sollten mit einer entsprechenden Implementierung überschreiben.
Das |
GetStream(Int32) |
Ruft einen Stream ab, um Daten aus der angegebenen Spalte abzurufen. (Geerbt von DbDataReader) |
GetString(Int32) |
Ruft den Wert der angegebenen Spalte als eine Zeichenfolge ab. |
GetTextReader(Int32) |
Ruft einen Textreader zum Auslesen von Daten aus der Spalte ab. (Geerbt von DbDataReader) |
GetTimeSpan(Int32) |
Ruft den Wert der angegebenen Spalte als |
GetType() |
Ruft den Type der aktuellen Instanz ab. (Geerbt von Object) |
GetValue(Int32) |
Ruft den Wert der Spalte an der angegebenen Ordnungszahl im systemeigenen Format ab. |
GetValues(Object[]) |
Füllt ein Array von Objekten mit den Spaltenwerten der aktuellen Zeile auf. |
InitializeLifetimeService() |
Veraltet.
Ruft ein Lebensdauerdienstobjekt zur Steuerung der Lebensdauerrichtlinie für diese Instanz ab. (Geerbt von MarshalByRefObject) |
IsDBNull(Int32) |
Ruft einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält. |
IsDBNullAsync(Int32) |
Ruft asynchron einen Wert ab, der angibt, ob die Spalte nicht vorhandene oder fehlende Werte enthält. (Geerbt von DbDataReader) |
IsDBNullAsync(Int32, CancellationToken) |
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 des aktuellen Object. (Geerbt von Object) |
MemberwiseClone(Boolean) |
Erstellt eine flache Kopie des aktuellen MarshalByRefObject-Objekts. (Geerbt von MarshalByRefObject) |
NextResult() |
Positioniert OracleDataReader auf dem nächstem Ergebnis. |
NextResultAsync() |
Setzt den Datenreader beim Lesen der Ergebnisse von Batchanweisungen asynchron auf das nächste Ergebnis. (Geerbt von DbDataReader) |
NextResultAsync(CancellationToken) |
Setzt den Datenreader beim Lesen der Ergebnisse von Batchanweisungen asynchron auf das nächste Ergebnis. (Geerbt von DbDataReader) |
Read() |
Setzt den OracleDataReader auf den nächsten Datensatz. |
ReadAsync() |
Setzt den Reader asynchron auf den nächsten Datensatz in einem Resultset. (Geerbt von DbDataReader) |
ReadAsync(CancellationToken) |
Setzt den Reader asynchron auf den 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
IDataRecord.GetData(Int32) |
Eine Beschreibung dieses Elements finden Sie unter GetData(Int32). (Geerbt von DbDataReader) |
IEnumerable.GetEnumerator() |
Gibt einen Enumerator zurück, der eine Auflistung durchläuft. |
Erweiterungsmethoden
CanGetColumnSchema(DbDataReader) |
Ruft einen Wert ab, der angibt, ob ein DbDataReader-Objekt ein Spaltenschema haben kann. |
GetColumnSchema(DbDataReader) |
Ruft das Spaltenschema für ein DbDataReader-Objekt ab (DbColumn-Auflistung). |
Cast<TResult>(IEnumerable) |
Wandelt die Elemente eines IEnumerable in den angegebenen Typ um |
OfType<TResult>(IEnumerable) |
Filtert die Elemente eines IEnumerable anhand eines angegebenen Typs |
AsParallel(IEnumerable) |
Ermöglicht die Parallelisierung einer Abfrage. |
AsQueryable(IEnumerable) |
Konvertiert einen IEnumerable in einen IQueryable. |