OracleDataReader Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Umożliwia odczytywanie strumienia danych tylko do przodu z źródła danych. Klasa ta nie może być dziedziczona.
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
- Dziedziczenie
- Dziedziczenie
- Implementuje
Przykłady
Poniższy przykład tworzy element OracleConnection, i OracleCommand.OracleDataReader Przykład odczytuje dane, zapisuj je w konsoli. Na koniec przykład zamyka element OracleDataReader, a następnie 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
Uwagi
Aby utworzyć obiekt , należy wywołać ExecuteReader metodę OracleDataReaderOracleCommand obiektu, a nie bezpośrednio przy użyciu konstruktora.
Zmiany wprowadzone w zestawie wyników przez inny proces lub wątek, gdy dane są odczytywane, mogą być widoczne dla użytkownika .OracleDataReader
IsClosed i RecordsAffected są jedynymi właściwościami, które można wywołać po OracleDataReader zamknięciu. W niektórych przypadkach należy wywołać metodę Close , aby można było wywołać metodę RecordsAffected.
W dowolnym momencie może być otwartych więcej niż jeden OracleDataReader .
W poniższych dwóch przykładach języka Visual Basic pokazano, jak użyć elementu OracleDataReader do pobrania bazy danych Oracle REF CURSOR
. W tych przykładach są używane tabele zdefiniowane w schemacie Oracle Scott/Tiger i wymagają następującego pakietu PL/SQL i treści pakietu. Aby użyć przykładów, należy je utworzyć na serwerze.
Twórca następujący pakiet Oracle na serwerze 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;
/
Twórca następującą treść pakietu Oracle na serwerze 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;
/
W tym przykładzie języka Visual Basic jest wykonywana procedura składowana PL/SQL zwracająca REF CURSOR
parametr i odczytuje wartość 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
W tym przykładzie języka Visual Basic jest wykonywana procedura składowana PL/SQL zwracająca dwa REF CURSOR
parametry i odczytuje wartości przy użyciu elementu 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
Ten przykład języka C# tworzy tabelę Oracle i ładuje ją z danymi. Ten przykład należy uruchomić przed uruchomieniem kolejnego przykładu, który pokazuje, jak używać elementu OracleDataReader w celu uzyskania dostępu do danych przy użyciu 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();
}
}
W tym przykładzie języka C# użyto elementu w OracleDataReader celu uzyskania dostępu do danych i użyto kilku OracleType struktur do wyświetlania danych.
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();
}
}
Właściwości
Depth |
Pobiera wartość wskazującą głębokość zagnieżdżania dla bieżącego wiersza. |
FieldCount |
Pobiera liczbę kolumn w bieżącym wierszu. |
HasRows |
Pobiera wartość wskazującą, czy OracleDataReader element zawiera co najmniej jeden wiersz. |
IsClosed |
Wskazuje, czy element OracleDataReader jest zamknięty. |
Item[Int32] |
Pobiera wartość określonej kolumny w formacie natywnym, biorąc pod uwagę liczbę porządkową kolumny. |
Item[String] |
Pobiera wartość określonej kolumny w formacie natywnym, biorąc pod uwagę nazwę kolumny. |
RecordsAffected |
Pobiera liczbę wierszy zmienionych, wstawionych lub usuniętych przez wykonanie instrukcji SQL. |
VisibleFieldCount |
Pobiera liczbę pól w polach DbDataReader , które nie są ukryte. (Odziedziczone po DbDataReader) |
Metody
Close() |
OracleDataReader Zamyka obiekt. |
CloseAsync() |
Asynchronicznie zamyka DbDataReader obiekt. (Odziedziczone po DbDataReader) |
CreateObjRef(Type) |
Tworzy obiekt zawierający wszystkie istotne informacje wymagane do wygenerowania serwera proxy używanego do komunikowania się z obiektem zdalnym. (Odziedziczone po MarshalByRefObject) |
Dispose() |
Zwalnia zasoby używane przez ten obiekt. |
Dispose() |
Zwalnia wszystkie zasoby używane przez bieżące wystąpienie klasy DbDataReader. (Odziedziczone po DbDataReader) |
Dispose(Boolean) |
Zwalnia zasoby niezarządzane używane przez element DbDataReader i opcjonalnie zwalnia zasoby zarządzane. (Odziedziczone po DbDataReader) |
DisposeAsync() |
Asynchronicznie zwalnia wszystkie zasoby używane przez bieżące wystąpienie DbDataReader klasy. (Odziedziczone po DbDataReader) |
Equals(Object) |
Określa, czy dany obiekt jest taki sam, jak bieżący obiekt. (Odziedziczone po Object) |
GetBoolean(Int32) |
Pobiera wartość określonej kolumny jako wartość logiczną. |
GetByte(Int32) |
Pobiera wartość określonej kolumny jako bajt. |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Odczytuje strumień bajtów z określonej kolumny przesunięcia do buforu jako tablicy, począwszy od danego przesunięcia buforu. |
GetChar(Int32) |
Pobiera wartość określonej kolumny jako znak. |
GetChars(Int32, Int64, Char[], Int32, Int32) |
Odczytuje strumień znaków z określonego przesunięcia kolumny do buforu jako tablicy, począwszy od danego przesunięcia buforu. |
GetColumnSchemaAsync(CancellationToken) |
Jest to asynchroniczna wersja programu GetColumnSchema(DbDataReader).
Dostawcy powinni zastąpić odpowiednią implementacją.
Opcjonalnie |
GetData(Int32) |
Zwraca wartość IDataReader dla określonej kolumny porządkowej. |
GetData(Int32) |
Zwraca zagnieżdżony czytnik danych dla żądanej kolumny. (Odziedziczone po DbDataReader) |
GetDataTypeName(Int32) |
Pobiera nazwę typu danych źródłowych. |
GetDateTime(Int32) |
Pobiera wartość określonej kolumny jako |
GetDbDataReader(Int32) |
DbDataReader Zwraca obiekt dla żądanej kolumny porządkowej, który można zastąpić implementacją specyficzną dla dostawcy. (Odziedziczone po DbDataReader) |
GetDecimal(Int32) |
Pobiera wartość określonej kolumny jako |
GetDouble(Int32) |
Pobiera wartość określonej kolumny jako liczbę zmiennoprzecinkową o podwójnej precyzji. |
GetEnumerator() |
Zwraca wartość IEnumerator , która może służyć do iterowania wierszy w czytniku danych. |
GetFieldType(Int32) |
Type Pobiera typ danych obiektu . |
GetFieldValue<T>(Int32) |
Pobiera wartość określonej kolumny jako żądany typ. (Odziedziczone po DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
Asynchronicznie pobiera wartość określonej kolumny jako żądany typ. (Odziedziczone po DbDataReader) |
GetFieldValueAsync<T>(Int32) |
Asynchronicznie pobiera wartość określonej kolumny jako żądany typ. (Odziedziczone po DbDataReader) |
GetFloat(Int32) |
Pobiera wartość określonej kolumny jako liczbę zmiennoprzecinkową o pojedynczej precyzji. |
GetGuid(Int32) |
Pobiera wartość określonej kolumny jako unikatowy identyfikator globalny (GUID). |
GetHashCode() |
Służy jako domyślna funkcja skrótu. (Odziedziczone po Object) |
GetInt16(Int32) |
Pobiera wartość określonej kolumny jako 16-bitową liczbę całkowitą ze znakiem. |
GetInt32(Int32) |
Pobiera wartość określonej kolumny jako 32-bitową liczbę całkowitą ze znakiem. |
GetInt64(Int32) |
Pobiera wartość określonej kolumny jako 64-bitową liczbę całkowitą ze znakiem. |
GetLifetimeService() |
Przestarzałe.
Pobiera bieżący obiekt usługi okresu istnienia, który kontroluje zasady okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
GetName(Int32) |
Pobiera nazwę określonej kolumny. |
GetOracleBFile(Int32) |
Pobiera wartość określonej kolumny jako OracleBFile obiekt. |
GetOracleBinary(Int32) |
Pobiera wartość określonej kolumny jako OracleBinary obiekt. |
GetOracleDateTime(Int32) |
Pobiera wartość określonej kolumny jako OracleDateTime obiekt. |
GetOracleLob(Int32) |
Pobiera wartość określonej kolumny jako OracleLob obiekt. |
GetOracleMonthSpan(Int32) |
Pobiera wartość określonej kolumny jako OracleMonthSpan obiekt. |
GetOracleNumber(Int32) |
Pobiera wartość określonej kolumny jako OracleNumber obiekt. |
GetOracleString(Int32) |
Pobiera wartość określonej kolumny jako OracleString obiekt. |
GetOracleTimeSpan(Int32) |
Pobiera wartość określonej kolumny jako OracleTimeSpan obiekt. |
GetOracleValue(Int32) |
Pobiera wartość kolumny w określonym formacie Oracle. |
GetOracleValues(Object[]) |
Pobiera wszystkie kolumny atrybutów w bieżącym wierszu w formacie Oracle. |
GetOrdinal(String) |
Pobiera porządkową kolumnę, podając nazwę kolumny. |
GetProviderSpecificFieldType(Int32) |
Pobiera element |
GetProviderSpecificValue(Int32) |
Pobiera element |
GetProviderSpecificValues(Object[]) |
Pobiera tablicę obiektów, które są reprezentacją podstawowych wartości specyficznych dla dostawcy. |
GetSchemaTable() |
Zwraca element opisujący DataTable metadane kolumny oracleDataReader. |
GetSchemaTableAsync(CancellationToken) |
Jest to asynchroniczna wersja programu GetSchemaTable().
Dostawcy powinni zastąpić odpowiednią implementacją.
Opcjonalnie |
GetStream(Int32) |
Pobiera strumień w celu pobrania danych z określonej kolumny. (Odziedziczone po DbDataReader) |
GetString(Int32) |
Pobiera wartość określonej kolumny jako ciąg. |
GetTextReader(Int32) |
Pobiera czytnik tekstu w celu pobrania danych z kolumny. (Odziedziczone po DbDataReader) |
GetTimeSpan(Int32) |
Pobiera wartość określonej kolumny jako |
GetType() |
Type Pobiera bieżące wystąpienie. (Odziedziczone po Object) |
GetValue(Int32) |
Pobiera wartość kolumny w określonym kodzie porządkowym w formacie natywnym. |
GetValues(Object[]) |
Wypełnia tablicę obiektów wartościami kolumn bieżącego wiersza. |
InitializeLifetimeService() |
Przestarzałe.
Uzyskuje obiekt usługi okresu istnienia w celu kontrolowania zasad okresu istnienia dla tego wystąpienia. (Odziedziczone po MarshalByRefObject) |
IsDBNull(Int32) |
Pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości. |
IsDBNullAsync(Int32, CancellationToken) |
Asynchronicznie pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości. (Odziedziczone po DbDataReader) |
IsDBNullAsync(Int32) |
Asynchronicznie pobiera wartość wskazującą, czy kolumna zawiera nieistniejące, czy brakujące wartości. (Odziedziczone po DbDataReader) |
MemberwiseClone() |
Tworzy płytkią kopię bieżącego Objectelementu . (Odziedziczone po Object) |
MemberwiseClone(Boolean) |
Tworzy płytkią kopię bieżącego MarshalByRefObject obiektu. (Odziedziczone po MarshalByRefObject) |
NextResult() |
OracleDataReader Przechodzi do następnego wyniku. |
NextResultAsync() |
Asynchronicznie przechodzi czytelnika do następnego wyniku podczas odczytywania wyników partii instrukcji. (Odziedziczone po DbDataReader) |
NextResultAsync(CancellationToken) |
Asynchronicznie przechodzi czytelnika do następnego wyniku podczas odczytywania wyników partii instrukcji. (Odziedziczone po DbDataReader) |
Read() |
OracleDataReader Przechodzi do następnego rekordu. |
ReadAsync() |
Asynchronicznie zwiększa czytnik do następnego rekordu w zestawie wyników. (Odziedziczone po DbDataReader) |
ReadAsync(CancellationToken) |
Asynchronicznie zwiększa czytnik do następnego rekordu w zestawie wyników. (Odziedziczone po DbDataReader) |
ToString() |
Zwraca ciąg reprezentujący bieżący obiekt. (Odziedziczone po Object) |
Jawne implementacje interfejsu
IDataRecord.GetData(Int32) |
Aby uzyskać opis tego członka, zobacz GetData(Int32). (Odziedziczone po DbDataReader) |
IEnumerable.GetEnumerator() |
Zwraca moduł wyliczający, który iteruje po kolekcji. |
Metody rozszerzania
CanGetColumnSchema(DbDataReader) |
Pobiera wartość wskazującą, czy DbDataReader można uzyskać schemat kolumny. |
GetColumnSchema(DbDataReader) |
Pobiera schemat kolumny (DbColumn kolekcja) dla elementu DbDataReader. |
Cast<TResult>(IEnumerable) |
Rzutuje elementy obiektu IEnumerable na określony typ. |
OfType<TResult>(IEnumerable) |
Filtruje elementy IEnumerable elementu na podstawie określonego typu. |
AsParallel(IEnumerable) |
Umożliwia równoległość zapytania. |
AsQueryable(IEnumerable) |
Konwertuje element IEnumerable na .IQueryable |