OracleDataReader Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Fornece uma forma de ler um fluxo apenas direto de linhas de dados de uma fonte de dados. Esta 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 seguinte cria um OracleConnection, um OracleCommand, e um OracleDataReader. O exemplo lê os dados, escrevendo-os para a consola. Finalmente, o exemplo fecha o OracleDataReader, depois 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
Observações
Para criar um OracleDataReader, deve chamar o ExecuteReader método do OracleCommand objeto, em vez de usar diretamente um construtor.
Alterações feitas a um conjunto de resultados por outro processo ou thread enquanto os dados estão a ser lidos podem ser visíveis para o utilizador do OracleDataReader.
IsClosed e RecordsAffected são as únicas propriedades que pode chamar depois de o OracleDataReader fechar. Em alguns casos, tem de ligar Close antes de poder ligar RecordsAffected.
Mais do que um OracleDataReader pode estar aberto ao mesmo tempo.
Os dois exemplos Visual Basic seguintes demonstram como usar um OracleDataReader para recuperar um Oráculo REF CURSOR. Estes exemplos utilizam tabelas definidas no esquema Oracle Scott/Tiger e requerem o seguinte pacote PL/SQL e o corpo do pacote. Tem de criar estes no 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 de 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 Visual Basic exemplo executa um procedimento armazenado PL/SQL que devolve um parâmetro REF CURSOR 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 Visual Basic exemplo executa um procedimento armazenado PL/SQL que devolve dois parâmetros REF CURSOR 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 carrega-a com dados. Deve executar este exemplo antes de executar o exemplo seguinte, que demonstra o uso de um OracleDataReader para aceder aos 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 aceder a dados e utiliza 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
| Name | Description |
|---|---|
| Depth |
Obtém um valor que indica a profundidade de aninhamento para a linha atual. |
| FieldCount |
Obtém o número de colunas na linha atual. |
| HasRows |
Recebe um valor que indica se contém OracleDataReader uma ou mais linhas. |
| IsClosed |
Indica se o OracleDataReader está fechado. |
| Item[Int32] |
Obtém o valor da coluna especificada no seu formato nativo dado o ordinal da coluna. |
| Item[String] |
Obtém o valor da coluna especificada no seu formato nativo, dado o nome da coluna. |
| RecordsAffected |
Faz com que o número de linhas seja alterado, inserido ou eliminado pela execução da instrução SQL. |
| VisibleFieldCount |
Obtém o número de campos no DbDataReader que não estão ocultos. (Herdado de DbDataReader) |
Métodos
| Name | Description |
|---|---|
| Close() |
Fecha o OracleDataReader objeto. |
| CreateObjRef(Type) |
Cria um objeto que contém toda a informação relevante necessária para gerar um proxy usado para comunicar com um objeto remoto. (Herdado de MarshalByRefObject) |
| Dispose() |
Liberta os recursos que são usados por este objeto. |
| Dispose() |
Liberta todos os recursos usados pela instância atual da DbDataReader classe. (Herdado de DbDataReader) |
| Dispose(Boolean) |
Liberta os recursos não geridos usados pelo DbDataReader e opcionalmente liberta os recursos geridos. (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 Booleano. |
| 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 da coluna especificado para o buffer como um array, começando no deslocamento do buffer dado. |
| GetChar(Int32) |
Obtém o valor da coluna especificada como um carácter. |
| GetChars(Int32, Int64, Char[], Int32, Int32) |
Lê um fluxo de caracteres do deslocamento de coluna especificado para o buffer como um array, começando no deslocamento do buffer dado. |
| GetData(Int32) |
Devolve um IDataReader para o ordinal da coluna especificado. |
| GetData(Int32) |
Devolve 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 objeto |
| GetDbDataReader(Int32) |
Devolve um DbDataReader objeto para o ordinal da coluna solicitado que pode ser sobreposto com uma implementação específica do fornecedor. (Herdado de DbDataReader) |
| GetDecimal(Int32) |
Obtém o valor da coluna especificada como objeto |
| GetDouble(Int32) |
Obtém o valor da coluna especificada como um número de ponto flutuante de dupla precisão. |
| GetEnumerator() |
Retorna e IEnumerator que pode ser usado para iterar pelas linhas no leitor de dados. |
| GetFieldType(Int32) |
Obtém-se que Type é o tipo de dado do objeto. |
| GetFieldValue<T>(Int32) |
Recebe o valor da coluna especificada como o tipo solicitado. (Herdado de DbDataReader) |
| GetFieldValueAsync<T>(Int32, CancellationToken) |
Assíncrono, obtém o valor da coluna especificada como o tipo solicitado. (Herdado de DbDataReader) |
| GetFieldValueAsync<T>(Int32) |
Assíncrono, obtém o valor da coluna especificada como o 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 identificador globalmente único (GUID). |
| GetHashCode() |
Serve como função de hash predefinida. (Herdado de Object) |
| GetInt16(Int32) |
Obtém o valor da coluna especificada como um inteiro com assinatura de 16 bits. |
| GetInt32(Int32) |
Obtém o valor da coluna especificada como um inteiro assinado de 32 bits. |
| GetInt64(Int32) |
Obtém o valor da coluna especificada como um inteiro assinado de 64 bits. |
| GetLifetimeService() |
Recupera o objeto de serviço de tempo de vida atual que controla a política de vida útil neste caso. (Herdado de MarshalByRefObject) |
| GetName(Int32) |
Obtém o nome da coluna especificada. |
| GetOracleBFile(Int32) |
Obtém o valor da coluna especificada como um OracleBFile objeto. |
| GetOracleBinary(Int32) |
Obtém o valor da coluna especificada como um OracleBinary objeto. |
| GetOracleDateTime(Int32) |
Obtém o valor da coluna especificada como um OracleDateTime objeto. |
| GetOracleLob(Int32) |
Obtém o valor da coluna especificada como um OracleLob objeto. |
| GetOracleMonthSpan(Int32) |
Obtém o valor da coluna especificada como um OracleMonthSpan objeto. |
| GetOracleNumber(Int32) |
Obtém o valor da coluna especificada como um OracleNumber objeto. |
| GetOracleString(Int32) |
Obtém o valor da coluna especificada como um OracleString objeto. |
| GetOracleTimeSpan(Int32) |
Obtém o valor da coluna especificada como um OracleTimeSpan objeto. |
| GetOracleValue(Int32) |
Obtém o valor da coluna no ordinal especificado no seu formato Oracle. |
| GetOracleValues(Object[]) |
Obtém todas as colunas de atributos na linha atual no formato Oracle. |
| GetOrdinal(String) |
Obtém o ordinal da coluna, dado o nome da coluna. |
| GetProviderSpecificFieldType(Int32) |
Obtém um |
| GetProviderSpecificValue(Int32) |
Obtém um |
| GetProviderSpecificValues(Object[]) |
Obtém um array de objetos que representam os valores específicos do fornecedor subjacente. |
| GetSchemaTable() |
Devolve a DataTable que descreve os metadados da coluna do OracleDataReader. |
| GetStream(Int32) |
Recebe um fluxo para recuperar dados da coluna especificada. (Herdado de DbDataReader) |
| GetString(Int32) |
Obtém o valor da coluna especificada como uma cadeia. |
| GetTextReader(Int32) |
Faz com que um leitor de texto recupere 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 no seu formato nativo. |
| GetValues(Object[]) |
Preenche um array de objetos com os valores das colunas da linha atual. |
| InitializeLifetimeService() |
Obtém-se um objeto de serviço vitalício para controlar a apólice vitalícia neste caso. (Herdado de MarshalByRefObject) |
| IsDBNull(Int32) |
Recebe um valor que indica se a coluna contém valores inexistentes ou em falta. |
| IsDBNullAsync(Int32, CancellationToken) |
De forma assíncrona, obtém um valor que indica se a coluna contém valores inexistentes ou em falta. (Herdado de DbDataReader) |
| IsDBNullAsync(Int32) |
De forma assíncrona, obtém um valor que indica se a coluna contém valores inexistentes ou em falta. (Herdado de DbDataReader) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| MemberwiseClone(Boolean) |
Cria uma cópia superficial do objeto atual MarshalByRefObject . (Herdado de MarshalByRefObject) |
| NextResult() |
Avança para OracleDataReader o próximo resultado. |
| NextResultAsync() |
De forma assíncrona, avança o leitor para o resultado seguinte ao ler os resultados de um conjunto de instruções. (Herdado de DbDataReader) |
| NextResultAsync(CancellationToken) |
De forma assíncrona, avança o leitor para o resultado seguinte ao ler os resultados de um conjunto de instruções. (Herdado de DbDataReader) |
| Read() |
Avança OracleDataReader para o próximo disco. |
| ReadAsync() |
De forma assíncrona, avança o leitor para o registo seguinte num conjunto de resultados. (Herdado de DbDataReader) |
| ReadAsync(CancellationToken) |
De forma assíncrona, avança o leitor para o registo seguinte num conjunto de resultados. (Herdado de DbDataReader) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |
Implementações de Interface Explícita
| Name | Description |
|---|---|
| IDataRecord.GetData(Int32) |
Para uma descrição deste elemento, veja GetData(Int32). (Herdado de DbDataReader) |
| IEnumerable.GetEnumerator() |
Devolve um enumerador que itera numa coleção. |
Métodos da Extensão
| Name | Description |
|---|---|
| AsParallel(IEnumerable) |
Permite a paralelização de uma consulta. |
| AsQueryable(IEnumerable) |
Converte um IEnumerable para um IQueryable. |
| CanGetColumnSchema(DbDataReader) |
Obtém um valor que indica se um DbDataReader pode obter um esquema de coluna. |
| Cast<TResult>(IEnumerable) |
Conjura os elementos de an IEnumerable para o tipo especificado. |
| GetColumnSchema(DbDataReader) |
Obtém o esquema de colunas (DbColumn coleção) para um DbDataReader. |
| OfType<TResult>(IEnumerable) |
Filtra os elementos de um IEnumerable com base num tipo especificado. |