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.
Consente di leggere un flusso forward-only di righe di dati 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 oggetto OracleConnection, un OracleCommandoggetto e un oggetto OracleDataReader. L'esempio legge i dati, scrivendoli 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 è possibile chiamare dopo la chiusura di OracleDataReader . In alcuni casi, è necessario chiamare Close prima di poter chiamare RecordsAffected.
Più di una OracleDataReader possono essere aperte in qualsiasi momento.
I due esempi di Visual Basic seguenti illustrano come usare un OracleDataReader per recuperare un REF CURSOR Oracle. Questi esempi usano tabelle definite nello schema Oracle Scott/Tiger e richiedono il pacchetto PL/SQL seguente e il corpo del pacchetto. È necessario crearli nel server per usare gli esempi.
Creare il pacchetto Oracle seguente nel 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 corpo del pacchetto Oracle seguente nel 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 Visual Basic esegue una stored procedure PL/SQL che restituisce un parametro REF CURSOR 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 Visual Basic esegue una stored procedure PL/SQL che restituisce due parametri REF CURSOR e legge i valori usando un 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
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 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 OracleDataReader oggetto 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à
| Nome | Descrizione |
|---|---|
| Depth |
Ottiene un valore che indica la profondità di annidamento per la riga corrente. |
| FieldCount |
Ottiene il numero di colonne nella riga corrente. |
| HasRows |
Ottiene un valore che indica se contiene OracleDataReader una o più righe. |
| IsClosed |
Indica se l'oggetto OracleDataReader è chiuso. |
| Item[Int32] |
Ottiene il valore della colonna specificata nel formato nativo in base all'ordinale di colonna. |
| Item[String] |
Ottiene il valore della colonna specificata nel formato nativo in base al nome della colonna. |
| RecordsAffected |
Ottiene il numero di righe modificate, inserite o eliminate dall'esecuzione dell'istruzione SQL. |
| VisibleFieldCount |
Ottiene il numero di campi nell'oggetto DbDataReader che non sono nascosti. (Ereditato da DbDataReader) |
Metodi
| Nome | Descrizione |
|---|---|
| Close() |
Chiude l'oggetto OracleDataReader . |
| CreateObjRef(Type) |
Crea un oggetto che contiene tutte le informazioni pertinenti necessarie per generare un proxy utilizzato per comunicare 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 DbDataReader classe . (Ereditato da DbDataReader) |
| Dispose(Boolean) |
Rilascia le risorse non gestite usate da DbDataReader e, facoltativamente, rilascia le risorse gestite. (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 booleano. |
| 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 come 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. |
| GetData(Int32) |
Restituisce un oggetto IDataReader per l'ordinale di colonna specificato. |
| GetData(Int32) |
Restituisce un lettore di dati annidato 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 |
| GetDbDataReader(Int32) |
Restituisce un DbDataReader oggetto per l'ordinale di colonna richiesta di cui è possibile eseguire l'override con un'implementazione specifica del provider. (Ereditato da DbDataReader) |
| GetDecimal(Int32) |
Ottiene il valore della colonna specificata come |
| 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 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, CancellationToken) |
Ottiene in modo asincrono 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) |
| GetFloat(Int32) |
Ottiene il valore della colonna specificata come numero a 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 come 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 intero con segno a 64 bit. |
| GetLifetimeService() |
Recupera l'oggetto servizio di durata corrente che controlla i criteri di durata per questa istanza. (Ereditato da MarshalByRefObject) |
| GetName(Int32) |
Ottiene il nome della colonna specificata. |
| GetOracleBFile(Int32) |
Ottiene il valore della colonna specificata come OracleBFile oggetto . |
| GetOracleBinary(Int32) |
Ottiene il valore della colonna specificata come OracleBinary oggetto . |
| GetOracleDateTime(Int32) |
Ottiene il valore della colonna specificata come OracleDateTime oggetto . |
| GetOracleLob(Int32) |
Ottiene il valore della colonna specificata come OracleLob oggetto . |
| GetOracleMonthSpan(Int32) |
Ottiene il valore della colonna specificata come OracleMonthSpan oggetto . |
| GetOracleNumber(Int32) |
Ottiene il valore della colonna specificata come OracleNumber oggetto . |
| GetOracleString(Int32) |
Ottiene il valore della colonna specificata come OracleString oggetto . |
| GetOracleTimeSpan(Int32) |
Ottiene il valore della colonna specificata come OracleTimeSpan oggetto . |
| GetOracleValue(Int32) |
Ottiene il valore della colonna in corrispondenza del numero ordinale specificato nel formato Oracle. |
| GetOracleValues(Object[]) |
Ottiene tutte le colonne dell'attributo nella riga corrente in formato Oracle. |
| GetOrdinal(String) |
Ottiene l'ordinale di colonna, in base al nome della colonna. |
| GetProviderSpecificFieldType(Int32) |
Ottiene un oggetto |
| GetProviderSpecificValue(Int32) |
Ottiene un oggetto |
| GetProviderSpecificValues(Object[]) |
Ottiene una matrice di oggetti che rappresentano i valori specifici del provider sottostante. |
| GetSchemaTable() |
Restituisce un oggetto DataTable che descrive i metadati di colonna di OracleDataReader. |
| GetStream(Int32) |
Ottiene un flusso per recuperare dati dalla colonna specificata. (Ereditato da DbDataReader) |
| GetString(Int32) |
Ottiene il valore della colonna specificata come 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 come oggetto |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| GetValue(Int32) |
Ottiene il valore della colonna in corrispondenza del numero ordinale specificato nel formato nativo. |
| GetValues(Object[]) |
Popola una matrice di oggetti con i valori di colonna della riga corrente. |
| InitializeLifetimeService() |
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 inesistenti o mancanti. |
| IsDBNullAsync(Int32, CancellationToken) |
Ottiene in modo asincrono un valore che indica se la colonna contiene valori inesistenti o mancanti. (Ereditato da DbDataReader) |
| IsDBNullAsync(Int32) |
Ottiene in modo asincrono un valore che indica se la colonna contiene valori inesistenti o mancanti. (Ereditato da DbDataReader) |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| MemberwiseClone(Boolean) |
Crea una copia superficiale dell'oggetto corrente MarshalByRefObject . (Ereditato da MarshalByRefObject) |
| NextResult() |
Sposta l'oggetto 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
| Nome | Descrizione |
|---|---|
| IDataRecord.GetData(Int32) |
Per una descrizione di questo membro, vedere GetData(Int32). (Ereditato da DbDataReader) |
| IEnumerable.GetEnumerator() |
Restituisce un enumeratore che scorre un insieme. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| AsParallel(IEnumerable) |
Abilita la parallelizzazione di una query. |
| AsQueryable(IEnumerable) |
Converte un IEnumerable in un IQueryable. |
| CanGetColumnSchema(DbDataReader) |
Ottiene un valore che indica se un DbDataReader oggetto può ottenere uno schema di colonna. |
| Cast<TResult>(IEnumerable) |
Esegue il cast degli elementi di un IEnumerable al tipo specificato. |
| GetColumnSchema(DbDataReader) |
Ottiene lo schema della colonna (DbColumn raccolta) per un oggetto DbDataReader. |
| OfType<TResult>(IEnumerable) |
Filtra gli elementi di un IEnumerable in base a un tipo specificato. |