OracleDataReader Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Fornisce un modo per leggere un flusso di righe di dati forward-only da un'origine dati. La classe non può essere ereditata.
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
- Ereditarietà
- Ereditarietà
- Implementazioni
Esempio
Nell'esempio seguente viene creato un OracleConnectionoggetto , un OracleCommande un OracleDataReaderoggetto . L'esempio legge i dati, scrivendolo nella console. Infine, l'esempio chiude , OracleDataReaderquindi .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
Commenti
Per creare un OracleDataReaderoggetto , è necessario chiamare il ExecuteReader metodo dell'oggetto OracleCommand anziché usare direttamente un costruttore.
Le modifiche apportate a un set di risultati da un altro processo o thread durante la lettura dei dati possono essere visibili all'utente di OracleDataReader.
IsClosed e RecordsAffected sono le uniche proprietà che possono essere chiamate dopo la chiusura dell'oggetto OracleDataReader. In alcuni casi, è necessario chiamare prima di poter chiamare CloseRecordsAffected.
Più di uno OracleDataReader può essere aperto in qualsiasi momento.
I due esempi di Visual Basic seguenti illustrano come usare un OracleDataReader oggetto per recuperare un oggetto Oracle REF CURSOR
. Questi esempi usano tabelle definite nello schema Oracle Scott/Tiger e richiedono il corpo del pacchetto PL/SQL seguente. È necessario crearli nel server per usare gli esempi.
Creare il seguente package Oracle sul server 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;
/
Creare il seguente corpo del package Oracle sul server 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;
/
Questo esempio di Visual Basic esegue una stored procedure PL/SQL che restituisce un REF CURSOR
parametro e legge il valore come 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
Questo esempio di Visual Basic esegue una stored procedure PL/SQL che restituisce due REF CURSOR
parametri e legge i valori usando un OracleDataReaderoggetto .
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
Questo esempio C# crea una tabella Oracle e la carica con i dati. È necessario eseguire questo esempio prima di eseguire l'esempio successivo, che illustra l'uso di un OracleDataReader oggetto per accedere ai dati usando le strutture 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();
}
}
Questo esempio C# usa un oggetto OracleDataReader per accedere ai dati e usa diverse OracleType strutture per visualizzare i dati.
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();
}
}
Proprietà
Depth |
Ottiene un valore che indica il livello di annidamento della riga corrente. |
FieldCount |
Ottiene il numero di colonne nella riga corrente. |
HasRows |
Ottiene un valore che indica se l'oggetto OracleDataReader contiene una o più righe. |
IsClosed |
Indica se la classe OracleDataReader è chiusa. |
Item[Int32] |
Ottiene il valore della colonna specificata nel formato nativo, data la posizione ordinale della colonna. |
Item[String] |
Ottiene il valore della colonna specificata nel formato nativo, dato il nome della colonna. |
RecordsAffected |
Ottiene il numero di righe modificate, inserite o eliminate dall'esecuzione dell'istruzione SQL. |
VisibleFieldCount |
Ottiene il numero di campi non nascosti in DbDataReader. (Ereditato da DbDataReader) |
Metodi
Close() |
Chiude l'oggetto OracleDataReader. |
CloseAsync() |
Chiude in modo asincrono l'oggetto DbDataReader. (Ereditato da DbDataReader) |
CreateObjRef(Type) |
Consente di creare un oggetto che contiene tutte le informazioni rilevanti necessarie per la generazione del proxy utilizzato per effettuare la comunicazione con un oggetto remoto. (Ereditato da MarshalByRefObject) |
Dispose() |
Rilascia le risorse utilizzate da questo oggetto. |
Dispose() |
Rilascia tutte le risorse usate dall'istanza corrente della classe DbDataReader. (Ereditato da DbDataReader) |
Dispose(Boolean) |
Rilascia le risorse non gestite usate da DbDataReader e, facoltativamente, le risorse gestite. (Ereditato da DbDataReader) |
DisposeAsync() |
Rilascia in modo asincrono le risorse usate dall'istanza corrente della classe DbDataReader. (Ereditato da DbDataReader) |
Equals(Object) |
Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object) |
GetBoolean(Int32) |
Ottiene il valore della colonna specificata come valore Boolean. |
GetByte(Int32) |
Ottiene il valore della colonna specificata come byte. |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Legge un flusso di byte dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato. |
GetChar(Int32) |
Ottiene il valore della colonna specificata sotto forma di carattere. |
GetChars(Int32, Int64, Char[], Int32, Int32) |
Legge un flusso di caratteri dall'offset di colonna specificato nel buffer come matrice, a partire dall'offset del buffer specificato. |
GetColumnSchemaAsync(CancellationToken) |
Si tratta della versione asincrona di GetColumnSchema(DbDataReader).
I provider devono eseguire l'override con un'implementazione appropriata.
|
GetData(Int32) |
Restituisce IDataReader per l'ordinale di colonna specificato. |
GetData(Int32) |
Restituisce un lettore di dati annidati per la colonna richiesta. (Ereditato da DbDataReader) |
GetDataTypeName(Int32) |
Ottiene il nome del tipo di dati di origine. |
GetDateTime(Int32) |
Ottiene il valore della colonna specificata come oggetto |
GetDbDataReader(Int32) |
Restituisce un oggetto DbDataReader per l'ordinale di colonna richiesto, di cui è possibile eseguire l'override tramite un'implementazione specifica del provider. (Ereditato da DbDataReader) |
GetDecimal(Int32) |
Ottiene il valore della colonna specificata come oggetto |
GetDouble(Int32) |
Ottiene il valore della colonna specificata come numero a virgola mobile a precisione doppia. |
GetEnumerator() |
Restituisce un oggetto IEnumerator che può essere utilizzato per scorrere le righe nel lettore di dati. |
GetFieldType(Int32) |
Ottiene l'oggetto Type che rappresenta il tipo di dati dell'oggetto. |
GetFieldValue<T>(Int32) |
Ottiene il valore della colonna specificata come tipo richiesto. (Ereditato da DbDataReader) |
GetFieldValueAsync<T>(Int32) |
Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto. (Ereditato da DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
Ottiene in modo asincrono il valore della colonna specificata come tipo richiesto. (Ereditato da DbDataReader) |
GetFloat(Int32) |
Ottiene il valore della colonna specificata sotto forma di numero in virgola mobile e precisione singola. |
GetGuid(Int32) |
Ottiene il valore della colonna specificata come identificatore univoco globale (GUID). |
GetHashCode() |
Funge da funzione hash predefinita. (Ereditato da Object) |
GetInt16(Int32) |
Ottiene il valore della colonna specificata sotto forma di intero con segno a 16 bit. |
GetInt32(Int32) |
Ottiene il valore della colonna specificata come intero con segno a 32 bit. |
GetInt64(Int32) |
Ottiene il valore della colonna specificata come integer con segno a 64 bit. |
GetLifetimeService() |
Obsoleti.
Consente di recuperare l'oggetto servizio di durata corrente per controllare i criteri di durata per l'istanza. (Ereditato da MarshalByRefObject) |
GetName(Int32) |
Ottiene il nome della colonna specificata. |
GetOracleBFile(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleBFile. |
GetOracleBinary(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleBinary. |
GetOracleDateTime(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleDateTime. |
GetOracleLob(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleLob. |
GetOracleMonthSpan(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleMonthSpan. |
GetOracleNumber(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleNumber. |
GetOracleString(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleString. |
GetOracleTimeSpan(Int32) |
Ottiene il valore della colonna specificata sotto forma di oggetto OracleTimeSpan. |
GetOracleValue(Int32) |
Ottiene il valore della colonna in corrispondenza dell'ordinale specificato nel formato Oracle. |
GetOracleValues(Object[]) |
Ottiene tutte le colonne di attributo nella riga corrente in formato Oracle. |
GetOrdinal(String) |
Ottiene la posizione ordinale della colonna, dato il nome della colonna. |
GetProviderSpecificFieldType(Int32) |
Ottiene un oggetto |
GetProviderSpecificValue(Int32) |
Ottiene un oggetto |
GetProviderSpecificValues(Object[]) |
Ottiene una matrice di oggetti che sono una rappresentazione dei valori specifici del provider sottostante. |
GetSchemaTable() |
Restituisce un oggetto DataTable che descrive i metadati della colonna di OracleDataReader. |
GetSchemaTableAsync(CancellationToken) |
Si tratta della versione asincrona di GetSchemaTable().
I provider devono eseguire l'override con un'implementazione appropriata.
|
GetStream(Int32) |
Ottiene un flusso per recuperare i dati dalla colonna specificata. (Ereditato da DbDataReader) |
GetString(Int32) |
Ottiene il valore della colonna specificata sotto forma di stringa. |
GetTextReader(Int32) |
Ottiene un lettore di testo per recuperare i dati dalla colonna. (Ereditato da DbDataReader) |
GetTimeSpan(Int32) |
Ottiene il valore della colonna specificata sotto forma di classe |
GetType() |
Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
GetValue(Int32) |
Ottiene il valore della colonna in corrispondenza dell'ordinale specificato nel formato nativo. |
GetValues(Object[]) |
Popola una matrice di oggetti con i valori della colonna della riga corrente. |
InitializeLifetimeService() |
Obsoleti.
Ottiene un oggetto servizio di durata per controllare i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
IsDBNull(Int32) |
Ottiene un valore che indica se la colonna contiene valori non esistenti o mancanti. |
IsDBNullAsync(Int32) |
Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti. (Ereditato da DbDataReader) |
IsDBNullAsync(Int32, CancellationToken) |
Ottiene un valore in modo asincrono, che indica se la colonna contiene valori non esistenti o mancanti. (Ereditato da DbDataReader) |
MemberwiseClone() |
Crea una copia superficiale dell'oggetto Object corrente. (Ereditato da Object) |
MemberwiseClone(Boolean) |
Crea una copia dei riferimenti dell'oggetto MarshalByRefObject corrente. (Ereditato da MarshalByRefObject) |
NextResult() |
Sposta OracleDataReader al risultato successivo. |
NextResultAsync() |
Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni. (Ereditato da DbDataReader) |
NextResultAsync(CancellationToken) |
Sposta in modo asincrono il lettore al risultato successivo durante la lettura dei risultati di un batch di istruzioni. (Ereditato da DbDataReader) |
Read() |
Sposta l'oggetto OracleDataReader al record successivo. |
ReadAsync() |
Sposta in modo asincrono il lettore al record successivo in un set di risultati. (Ereditato da DbDataReader) |
ReadAsync(CancellationToken) |
Sposta in modo asincrono il lettore al record successivo in un set di risultati. (Ereditato da DbDataReader) |
ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
Implementazioni dell'interfaccia esplicita
IDataRecord.GetData(Int32) |
Per una descrizione di questo membro, vedere GetData(Int32). (Ereditato da DbDataReader) |
IEnumerable.GetEnumerator() |
Restituisce un enumeratore che consente di eseguire l'iterazione di una raccolta. |
Metodi di estensione
CanGetColumnSchema(DbDataReader) |
Ottiene un valore che indica se un oggetto DbDataReader può ottenere uno schema di colonna. |
GetColumnSchema(DbDataReader) |
Ottiene lo schema di colonne (raccolta DbColumn) per un oggetto DbDataReader. |
Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un oggetto IEnumerable nel tipo specificato. |
OfType<TResult>(IEnumerable) |
Filtra gli elementi di un oggetto IEnumerable in base a un tipo specificato. |
AsParallel(IEnumerable) |
Consente la parallelizzazione di una query. |
AsQueryable(IEnumerable) |
Converte un oggetto IEnumerable in un oggetto IQueryable. |