OracleDataReader Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Fornece uma maneira de ler um fluxo somente de encaminhamento de linhas de dados por meio de uma fonte de dados. Essa classe não pode ser herdada.
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
- Herança
- Herança
- Implementações
Exemplos
O exemplo a seguir cria um OracleConnection, um OracleCommande um OracleDataReader. O exemplo lê os dados, gravando-os no console. Por fim, o exemplo fecha o OracleDataReadere o 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
Comentários
Para criar um OracleDataReader, você deve chamar o ExecuteReader método do objeto, em vez de OracleCommand usar diretamente um construtor.
As alterações feitas em um conjunto de resultados por outro processo ou thread enquanto os dados estão sendo lidos podem estar visíveis para o usuário do OracleDataReader.
IsClosed e RecordsAffected são as únicas propriedades que podem ser chamadas depois que o OracleDataReader for fechado. Em alguns casos, você deve chamar Close antes de chamar RecordsAffected.
Mais de um OracleDataReader pode ser aberto a qualquer momento.
Os dois exemplos do Visual Basic a seguir demonstram como usar um OracleDataReader para recuperar um Oracle REF CURSOR
. Esses exemplos usam tabelas definidas no esquema Oracle Scott/Tiger e exigem o pacote PL/SQL e o corpo do pacote a seguir. Você deve criá-los em seu servidor para usar os exemplos.
Crie o seguinte pacote Oracle no servidor 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;
/
Crie o seguinte corpo do pacote Oracle no servidor 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;
/
Este exemplo do Visual Basic executa um procedimento armazenado PL/SQL que retorna um REF CURSOR
parâmetro e lê o valor como um 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
Este exemplo do Visual Basic executa um procedimento armazenado PL/SQL que retorna dois REF CURSOR
parâmetros e lê os valores usando um 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
Este exemplo de C# cria uma tabela Oracle e a carrega com dados. Você deve executar este exemplo antes de executar o exemplo subsequente, que demonstra o uso de um OracleDataReader para acessar os dados usando estruturas 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();
}
}
Este exemplo de C# usa um OracleDataReader para acessar dados e usa várias OracleType estruturas para exibir os dados.
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();
}
}
Propriedades
Depth |
Obtém um valor que indica a profundidade de aninhamento da linha atual. |
FieldCount |
Obtém o número de colunas na linha atual. |
HasRows |
Obtém um valor que indica se o OracleDataReader contém uma ou mais linhas. |
IsClosed |
Indica se o OracleDataReader está fechado. |
Item[Int32] |
Obtém o valor da coluna especificada em seu formato nativo de acordo com o ordinal da coluna. |
Item[String] |
Obtém o valor da coluna especificada em seu formato nativo de acordo com o nome da coluna. |
RecordsAffected |
Obtém o número de linhas alteradas, inseridas ou excluídas pela execução da instrução SQL. |
VisibleFieldCount |
Obtém o número de campos em DbDataReader que não estão ocultos. (Herdado de DbDataReader) |
Métodos
Close() |
Fecha o objeto OracleDataReader. |
CloseAsync() |
Fecha de maneira assíncrona o objeto DbDataReader. (Herdado de DbDataReader) |
CreateObjRef(Type) |
Cria um objeto que contém todas as informações relevantes necessárias para gerar um proxy usado para se comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
Dispose() |
Libera os recursos usados por este objeto. |
Dispose() |
Libera todos os recursos usados pela instância atual da classe DbDataReader. (Herdado de DbDataReader) |
Dispose(Boolean) |
Libera os recursos não gerenciados usados pelo DbDataReader e opcionalmente libera os recursos gerenciados. (Herdado de DbDataReader) |
DisposeAsync() |
Libera de forma assíncrona todos os recursos usados pela instância atual da classe DbDataReader. (Herdado de DbDataReader) |
Equals(Object) |
Determina se o objeto especificado é igual ao objeto atual. (Herdado de Object) |
GetBoolean(Int32) |
Obtém o valor da coluna especificada como um booliano. |
GetByte(Int32) |
Obtém o valor da coluna especificada como um byte. |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Lê um fluxo de bytes do deslocamento de coluna especificado no buffer como uma matriz, iniciando no deslocamento de buffer especificado. |
GetChar(Int32) |
Obtém o valor da coluna especificada como um caractere. |
GetChars(Int32, Int64, Char[], Int32, Int32) |
Lê um fluxo de caracteres do deslocamento de coluna especificado no buffer como uma matriz iniciada no deslocamento de buffer fornecido. |
GetColumnSchemaAsync(CancellationToken) |
Essa é a versão assíncrona de GetColumnSchema(DbDataReader).
Provedores devem substituir com uma implementação apropriada.
Opcionalmente, o |
GetData(Int32) |
Retorna um IDataReader para o ordinal da coluna especificada. |
GetData(Int32) |
Retorna um leitor de dados aninhado para a coluna solicitada. (Herdado de DbDataReader) |
GetDataTypeName(Int32) |
Obtém o nome do tipo de dados de origem. |
GetDateTime(Int32) |
Obtém o valor da coluna especificada como um objeto |
GetDbDataReader(Int32) |
Retorna um objeto DbDataReader para o ordinal da coluna solicitado que pode ser substituído por uma implementação específica do provedor. (Herdado de DbDataReader) |
GetDecimal(Int32) |
Obtém o valor da coluna especificada como um objeto |
GetDouble(Int32) |
Obtém o valor da coluna especificada como um número de ponto flutuante de precisão dupla. |
GetEnumerator() |
Retorna um IEnumerator que pode ser usado para iterar pelas linhas do leitor de dados. |
GetFieldType(Int32) |
Obtém o Type que é o tipo de dados do objeto. |
GetFieldValue<T>(Int32) |
Obtém o valor da coluna especificada como um tipo solicitado. (Herdado de DbDataReader) |
GetFieldValueAsync<T>(Int32) |
Obtém de forma assíncrona o valor da coluna especificada como um tipo solicitado. (Herdado de DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
Obtém de forma assíncrona o valor da coluna especificada como um tipo solicitado. (Herdado de DbDataReader) |
GetFloat(Int32) |
Obtém o valor da coluna especificada como um número de ponto flutuante de precisão simples. |
GetGuid(Int32) |
Obtém o valor da coluna especificada como um GUID (identificador global exclusivo). |
GetHashCode() |
Serve como a função de hash padrão. (Herdado de Object) |
GetInt16(Int32) |
Obtém o valor da coluna especificada como um inteiro com sinal de 16 bits. |
GetInt32(Int32) |
Obtém o valor da coluna especificada como um inteiro com sinal de 32 bits. |
GetInt64(Int32) |
Obtém o valor da coluna especificada como um inteiro com sinal de 64 bits. |
GetLifetimeService() |
Obsoleto.
Recupera o objeto de serviço de tempo de vida atual que controla a política de ciclo de vida para esta instância. (Herdado de MarshalByRefObject) |
GetName(Int32) |
Obtém o nome da coluna especificada. |
GetOracleBFile(Int32) |
Obtém o valor da coluna especificada como um objeto OracleBFile. |
GetOracleBinary(Int32) |
Obtém o valor da coluna especificada como um objeto OracleBinary. |
GetOracleDateTime(Int32) |
Obtém o valor da coluna especificada como um objeto OracleDateTime. |
GetOracleLob(Int32) |
Obtém o valor da coluna especificada como um objeto OracleLob. |
GetOracleMonthSpan(Int32) |
Obtém o valor da coluna especificada como um objeto OracleMonthSpan. |
GetOracleNumber(Int32) |
Obtém o valor da coluna especificada como um objeto OracleNumber. |
GetOracleString(Int32) |
Obtém o valor da coluna especificada como um objeto OracleString. |
GetOracleTimeSpan(Int32) |
Obtém o valor da coluna especificada como um objeto OracleTimeSpan. |
GetOracleValue(Int32) |
Obtém o valor da coluna no ordinal especificado em seu formato Oracle. |
GetOracleValues(Object[]) |
Obtém todas as colunas de atributo na linha atual no formato Oracle. |
GetOrdinal(String) |
Obtém a ordinal da coluna, de acordo com o nome da coluna. |
GetProviderSpecificFieldType(Int32) |
Obtém um |
GetProviderSpecificValue(Int32) |
Obtém um |
GetProviderSpecificValues(Object[]) |
Obtém uma matriz de objetos que são uma representação dos valores específicos do provedor subjacente. |
GetSchemaTable() |
Retorna um DataTable que descreve os metadados da coluna de OracleDataReader. |
GetSchemaTableAsync(CancellationToken) |
Essa é a versão assíncrona de GetSchemaTable().
Provedores devem substituir com uma implementação apropriada.
Opcionalmente, o |
GetStream(Int32) |
Obtém um fluxo para recuperar dados da coluna especificada. (Herdado de DbDataReader) |
GetString(Int32) |
Obtém o valor da coluna especificada como uma cadeia de caracteres. |
GetTextReader(Int32) |
Obtém um leitor de texto para recuperar dados da coluna. (Herdado de DbDataReader) |
GetTimeSpan(Int32) |
Obtém o valor da coluna especificada como um |
GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
GetValue(Int32) |
Obtém o valor da coluna no ordinal especificado em seu formato nativo. |
GetValues(Object[]) |
Popula uma matriz de objetos com os valores da coluna da linha atual. |
InitializeLifetimeService() |
Obsoleto.
Obtém um objeto de serviço de tempo de vida para controlar a política de tempo de vida para essa instância. (Herdado de MarshalByRefObject) |
IsDBNull(Int32) |
Obtém um valor que indica se a coluna contém valores ausentes ou inexistente. |
IsDBNullAsync(Int32) |
Obtém, de maneira assíncrona, um valor que indica se a coluna contém valores ausentes ou inexistente. (Herdado de DbDataReader) |
IsDBNullAsync(Int32, CancellationToken) |
Obtém, de maneira assíncrona, um valor que indica se a coluna contém valores ausentes ou inexistente. (Herdado de DbDataReader) |
MemberwiseClone() |
Cria uma cópia superficial do Object atual. (Herdado de Object) |
MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto MarshalByRefObject atual. (Herdado de MarshalByRefObject) |
NextResult() |
Avança o OracleDataReader para o próximo resultado. |
NextResultAsync() |
Avança de maneira assíncrona o leitor para o resultado seguinte ao ler os resultados de um lote de instruções. (Herdado de DbDataReader) |
NextResultAsync(CancellationToken) |
Avança de maneira assíncrona o leitor para o resultado seguinte ao ler os resultados de um lote de instruções. (Herdado de DbDataReader) |
Read() |
Avança o OracleDataReader para o próximo registro. |
ReadAsync() |
Avança de maneira assíncrona o leitor para o próximo registro em um conjunto de resultados. (Herdado de DbDataReader) |
ReadAsync(CancellationToken) |
Avança de maneira assíncrona o leitor para o próximo registro em um conjunto de resultados. (Herdado de DbDataReader) |
ToString() |
Retorna uma cadeia de caracteres que representa o objeto atual. (Herdado de Object) |
Implantações explícitas de interface
IDataRecord.GetData(Int32) |
Para obter uma descrição desse membro, confira GetData(Int32). (Herdado de DbDataReader) |
IEnumerable.GetEnumerator() |
Retorna um enumerador que itera em uma coleção. |
Métodos de Extensão
CanGetColumnSchema(DbDataReader) |
Obtém um valor que indica se um DbDataReader pode obter um esquema de coluna. |
GetColumnSchema(DbDataReader) |
Obtém o esquema da coluna (coleção DbColumn) para um DbDataReader. |
Cast<TResult>(IEnumerable) |
Converte os elementos de um IEnumerable para o tipo especificado. |
OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base em um tipo especificado. |
AsParallel(IEnumerable) |
Habilita a paralelização de uma consulta. |
AsQueryable(IEnumerable) |
Converte um IEnumerable em um IQueryable. |