OracleDataReader Класс
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Предоставляет способ чтения потока строк данных из источника только в прямом порядке. Этот класс не наследуется.
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
- Наследование
- Наследование
- Реализации
Примеры
В следующем примере создаются OracleConnection, OracleCommandи OracleDataReader. Этот пример считывает данные, записывая их в консоль. Наконец, пример закрывает OracleDataReader, а затем .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
Комментарии
Чтобы создать OracleDataReader, необходимо вызвать ExecuteReader метод OracleCommand объекта , а не напрямую с помощью конструктора.
Изменения, внесенные в набор результатов другим процессом или потоком во время чтения данных, могут быть видны пользователю OracleDataReader.
IsClosed и RecordsAffected являются единственными свойствами, которые могут быть вызваны после закрытия OracleDataReader. В некоторых случаях перед вызовом необходимо вызвать CloseRecordsAffected.
В любой OracleDataReader момент времени можно открыть несколько.
В следующих двух примерах Visual Basic показано, как использовать OracleDataReader для получения Oracle REF CURSOR
. В этих примерах используются таблицы, определенные в схеме Oracle Scott/Tiger, для которых требуется следующий пакет PL/SQL и текст пакета. Чтобы использовать примеры, их необходимо создать на сервере.
Создайте на сервере Oracle следующий пакет 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;
/
На сервере Oracle создайте следующий текст пакета 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;
/
В этом примере Visual Basic выполняется хранимая процедура PL/SQL, которая возвращает REF CURSOR
параметр и считывает значение как 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
В этом примере Visual Basic выполняется хранимая процедура PL/SQL, которая возвращает два REF CURSOR
параметра и считывает значения с помощью 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
Этот пример C# создает таблицу Oracle и загружает ее с данными. Этот пример необходимо выполнить перед выполнением последующего примера, в котором демонстрируется использование OracleDataReader для доступа к данным с помощью структур 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();
}
}
В этом примере C# используется OracleDataReader для доступа к данным, а для отображения данных используется несколько OracleType структур.
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();
}
}
Свойства
Depth |
Возвращает значение, показывающее глубину вложенности для текущей строки. |
FieldCount |
Возвращает число столбцов в текущей строке. |
HasRows |
Получает значение, указывающее, содержит ли объект OracleDataReader одну или несколько строк. |
IsClosed |
Указывает, закрыт ли объект OracleDataReader. |
Item[Int32] |
Возвращает значение указанного столбца в собственном формате при наличии заданного порядкового номера столбца. |
Item[String] |
Возвращает значение заданного столбца в собственном формате при наличии заданного имени столбца. |
RecordsAffected |
Возвращает число строк, которые были изменены, вставлены или удалены инструкцией SQL. |
VisibleFieldCount |
Возвращает число не скрытых полей в DbDataReader. (Унаследовано от DbDataReader) |
Методы
Close() |
Закрывает объект OracleDataReader. |
CloseAsync() |
Асинхронно закрывает объект DbDataReader. (Унаследовано от DbDataReader) |
CreateObjRef(Type) |
Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом. (Унаследовано от MarshalByRefObject) |
Dispose() |
Освобождает ресурсы, используемые данным объектом. |
Dispose() |
Освобождает все ресурсы, используемые текущим экземпляром класса DbDataReader. (Унаследовано от DbDataReader) |
Dispose(Boolean) |
Освобождает неуправляемые ресурсы, используемые объектом DbDataReader, а при необходимости освобождает также управляемые ресурсы. (Унаследовано от DbDataReader) |
DisposeAsync() |
Асинхронно освобождает все ресурсы, используемые текущим экземпляром класса DbDataReader. (Унаследовано от DbDataReader) |
Equals(Object) |
Определяет, равен ли указанный объект текущему объекту. (Унаследовано от Object) |
GetBoolean(Int32) |
Возвращает значение указанного столбца в виде логического значения. |
GetByte(Int32) |
Возвращает значение указанного столбца в виде байта. |
GetBytes(Int32, Int64, Byte[], Int32, Int32) |
Считывает поток байтов из указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера. |
GetChar(Int32) |
Возвращает значение указанного столбца в виде символа. |
GetChars(Int32, Int64, Char[], Int32, Int32) |
Считывает поток символов из указанного смещения столбца в буфер как массив, начиная с заданного смещения буфера. |
GetColumnSchemaAsync(CancellationToken) |
Это асинхронная версия метода GetColumnSchema(DbDataReader).
Поставщики должны выполнить переопределение с помощью соответствующей реализации.
При необходимости можно учитывать |
GetData(Int32) |
Возвращает IDataReader для указанного порядкового номера столбца. |
GetData(Int32) |
Возвращает вложенный объект чтения данных для запрошенного столбца. (Унаследовано от DbDataReader) |
GetDataTypeName(Int32) |
Получает имя исходного типа данных. |
GetDateTime(Int32) |
Возвращает значение указанного столбца в виде объекта |
GetDbDataReader(Int32) |
Возвращает объект DbDataReader для запрошенного порядкового номера столбца, который может быть переопределен с помощью зависящей от поставщика реализации. (Унаследовано от DbDataReader) |
GetDecimal(Int32) |
Возвращает значение указанного столбца в виде объекта |
GetDouble(Int32) |
Возвращает значение указанного столбца в виде числа с плавающей запятой двойной точности. |
GetEnumerator() |
Возвращает перечислитель IEnumerator, который может использоваться для просмотра строк в модуле чтения данных. |
GetFieldType(Int32) |
Возвращает тип Type, который является типом данных объекта. |
GetFieldValue<T>(Int32) |
Возвращает значение указанного столбца в виде запрошенного типа. (Унаследовано от DbDataReader) |
GetFieldValueAsync<T>(Int32) |
Асинхронно возвращает значение указанного столбца в виде запрошенного типа. (Унаследовано от DbDataReader) |
GetFieldValueAsync<T>(Int32, CancellationToken) |
Асинхронно возвращает значение указанного столбца в виде запрошенного типа. (Унаследовано от DbDataReader) |
GetFloat(Int32) |
Возвращает значение указанного столбца в виде числа с плавающей запятой с одиночной точностью. |
GetGuid(Int32) |
Возвращает значение заданного столбца в виде глобально-уникального идентификатора GUID. |
GetHashCode() |
Служит хэш-функцией по умолчанию. (Унаследовано от Object) |
GetInt16(Int32) |
Получает значение заданного столбца в виде 16-битового целого числа со знаком. |
GetInt32(Int32) |
Возвращает значение указанного столбца в виде 32-разрядного целого числа со знаком. |
GetInt64(Int32) |
Возвращает значение указанного столбца в виде 64-разрядного целого числа со знаком. |
GetLifetimeService() |
Устаревшие..
Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра. (Унаследовано от MarshalByRefObject) |
GetName(Int32) |
Возвращает имя заданного столбца. |
GetOracleBFile(Int32) |
Получает значение заданного столбца в виде объекта OracleBFile. |
GetOracleBinary(Int32) |
Получает значение заданного столбца в виде объекта OracleBinary. |
GetOracleDateTime(Int32) |
Получает значение заданного столбца в виде объекта OracleDateTime. |
GetOracleLob(Int32) |
Получает значение заданного столбца в виде объекта OracleLob. |
GetOracleMonthSpan(Int32) |
Получает значение заданного столбца в виде объекта OracleMonthSpan. |
GetOracleNumber(Int32) |
Получает значение заданного столбца в виде объекта OracleNumber. |
GetOracleString(Int32) |
Получает значение заданного столбца в виде объекта OracleString. |
GetOracleTimeSpan(Int32) |
Получает значение заданного столбца в виде объекта OracleTimeSpan. |
GetOracleValue(Int32) |
Возвращает значение столбца в виде заданного порядкового номера в формате Oracle. |
GetOracleValues(Object[]) |
Возвращает все столбцы атрибутов в текущей строке в формате Oracle. |
GetOrdinal(String) |
Возвращает порядковый номер столбца при наличии заданного имени столбца. |
GetProviderSpecificFieldType(Int32) |
Получает |
GetProviderSpecificValue(Int32) |
Получает |
GetProviderSpecificValues(Object[]) |
Возвращает массив объектов, которые представляют собой значения типа, специфического для базового поставщика. |
GetSchemaTable() |
Возвращает DataTable, описывающий метаданные о столбцах OracleDataReader. |
GetSchemaTableAsync(CancellationToken) |
Это асинхронная версия метода GetSchemaTable().
Поставщики должны выполнить переопределение с помощью соответствующей реализации.
При необходимости можно учитывать |
GetStream(Int32) |
Возвращает поток для получения данных из указанного столбца. (Унаследовано от DbDataReader) |
GetString(Int32) |
Возвращает значение заданного столбца в виде строки. |
GetTextReader(Int32) |
Получает модуль чтения текста для извлечения данных из столбца. (Унаследовано от DbDataReader) |
GetTimeSpan(Int32) |
Возвращает значение заданного столбца в виде объекта |
GetType() |
Возвращает объект Type для текущего экземпляра. (Унаследовано от Object) |
GetValue(Int32) |
Получает значение столбца с указанным порядковом номером в собственном формате. |
GetValues(Object[]) |
Заполняет массив объектов значениями столбцов текущей строки. |
InitializeLifetimeService() |
Устаревшие..
Получает объект службы времени существования для управления политикой времени существования для этого экземпляра. (Унаследовано от MarshalByRefObject) |
IsDBNull(Int32) |
Получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения. |
IsDBNullAsync(Int32) |
Асинхронно получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения. (Унаследовано от DbDataReader) |
IsDBNullAsync(Int32, CancellationToken) |
Асинхронно получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения. (Унаследовано от DbDataReader) |
MemberwiseClone() |
Создает неполную копию текущего объекта Object. (Унаследовано от Object) |
MemberwiseClone(Boolean) |
Создает неполную копию текущего объекта MarshalByRefObject. (Унаследовано от MarshalByRefObject) |
NextResult() |
Перемещает OracleDataReader к следующему результату. |
NextResultAsync() |
Асинхронно перемещает модуль чтения данных к следующему результату при чтении результатов из пакета инструкций. (Унаследовано от DbDataReader) |
NextResultAsync(CancellationToken) |
Асинхронно перемещает модуль чтения данных к следующему результату при чтении результатов из пакета инструкций. (Унаследовано от DbDataReader) |
Read() |
Перемещает OracleDataReader к следующей записи. |
ReadAsync() |
Асинхронно перемещает модуль чтения к следующей записи в результирующем наборе. (Унаследовано от DbDataReader) |
ReadAsync(CancellationToken) |
Асинхронно перемещает модуль чтения к следующей записи в результирующем наборе. (Унаследовано от DbDataReader) |
ToString() |
Возвращает строку, представляющую текущий объект. (Унаследовано от Object) |
Явные реализации интерфейса
IDataRecord.GetData(Int32) |
Описание этого члена см. в разделе GetData(Int32). (Унаследовано от DbDataReader) |
IEnumerable.GetEnumerator() |
Возвращает перечислитель, который осуществляет итерацию по коллекции. |
Методы расширения
CanGetColumnSchema(DbDataReader) |
Получает значение, которое указывает, может ли DbDataReader получить схему столбца. |
GetColumnSchema(DbDataReader) |
Получает схему столбца (коллекцию DbColumn) для DbDataReader. |
Cast<TResult>(IEnumerable) |
Приводит элементы объекта IEnumerable к заданному типу. |
OfType<TResult>(IEnumerable) |
Выполняет фильтрацию элементов объекта IEnumerable по заданному типу. |
AsParallel(IEnumerable) |
Позволяет осуществлять параллельный запрос. |
AsQueryable(IEnumerable) |
Преобразовывает коллекцию IEnumerable в объект IQueryable. |