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
Наследование
OracleDataReader
Наследование
Реализации

Примеры

В следующем примере создается 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 закрытия. В некоторых случаях необходимо вызвать Close перед вызовом RecordsAffected.

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 Закрывает объект.

CreateObjRef(Type)

Создает объект, содержащий все соответствующие сведения, необходимые для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.

(Унаследовано от MarshalByRefObject)
Dispose()

Освобождает ресурсы, используемые этим объектом.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса DbDataReader.

(Унаследовано от DbDataReader)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые DbDataReader и при необходимости освобождает управляемые ресурсы.

(Унаследовано от DbDataReader)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
GetBoolean(Int32)

Возвращает значение указанного столбца как логическое значение.

GetByte(Int32)

Возвращает значение указанного столбца в виде байта.

GetBytes(Int32, Int64, Byte[], Int32, Int32)

Считывает поток байтов из указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.

GetChar(Int32)

Возвращает значение указанного столбца в виде символа.

GetChars(Int32, Int64, Char[], Int32, Int32)

Считывает поток символов из указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.

GetData(Int32)

IDataReader Возвращает порядковый номер указанного столбца.

GetData(Int32)

Возвращает вложенное средство чтения данных для запрошенного столбца.

(Унаследовано от DbDataReader)
GetDataTypeName(Int32)

Возвращает имя исходного типа данных.

GetDateTime(Int32)

Возвращает значение указанного столбца в качестве DateTime объекта.

GetDbDataReader(Int32)

DbDataReader Возвращает объект для запрошенного порядкового номера столбца, который можно переопределить с помощью реализации для конкретного поставщика.

(Унаследовано от DbDataReader)
GetDecimal(Int32)

Возвращает значение указанного столбца в качестве Decimal объекта.

GetDouble(Int32)

Возвращает значение указанного столбца в виде числа с плавающей запятой двойной точности.

GetEnumerator()

Возвращает значение IEnumerator , которое можно использовать для итерации строк в средстве чтения данных.

GetFieldType(Int32)

Type Возвращает тип данных объекта.

GetFieldValue<T>(Int32)

Возвращает значение указанного столбца в качестве запрошенного типа.

(Унаследовано от DbDataReader)
GetFieldValueAsync<T>(Int32, CancellationToken)

Асинхронно получает значение указанного столбца в качестве запрошенного типа.

(Унаследовано от DbDataReader)
GetFieldValueAsync<T>(Int32)

Асинхронно получает значение указанного столбца в качестве запрошенного типа.

(Унаследовано от 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)

Возвращает представление Object базового типа поля поставщика.

GetProviderSpecificValue(Int32)

Возвращает представление Object базового типа поля поставщика.

GetProviderSpecificValues(Object[])

Возвращает массив объектов, которые являются представлением конкретных значений базового поставщика.

GetSchemaTable()

Возвращает метаданные DataTable столбца OracleDataReader.

GetStream(Int32)

Получает поток для получения данных из указанного столбца.

(Унаследовано от DbDataReader)
GetString(Int32)

Возвращает значение указанного столбца в виде строки.

GetTextReader(Int32)

Получает средство чтения текста для получения данных из столбца.

(Унаследовано от DbDataReader)
GetTimeSpan(Int32)

Возвращает значение указанного столбца в виде System.TimeSpan.

GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
GetValue(Int32)

Возвращает значение столбца в указанном порядковом номере в собственном формате.

GetValues(Object[])

Заполняет массив объектов значениями столбцов текущей строки.

InitializeLifetimeService()
Устаревшие..

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.

(Унаследовано от MarshalByRefObject)
IsDBNull(Int32)

Возвращает значение, указывающее, содержит ли столбец несуществующие или отсутствующие значения.

IsDBNullAsync(Int32, CancellationToken)

Асинхронно получает значение, указывающее, содержит ли столбец отсутствующие или отсутствующие значения.

(Унаследовано от DbDataReader)
IsDBNullAsync(Int32)

Асинхронно получает значение, указывающее, содержит ли столбец отсутствующие или отсутствующие значения.

(Унаследовано от 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()

Возвращает перечислитель, который выполняет итерацию по коллекции.

Методы расширения

Имя Описание
AsParallel(IEnumerable)

Включает параллелизацию запроса.

AsQueryable(IEnumerable)

Преобразует IEnumerable в IQueryable.

CanGetColumnSchema(DbDataReader)

Возвращает значение, указывающее, может ли получить DbDataReader схему столбца.

Cast<TResult>(IEnumerable)

Приведение элементов IEnumerable к указанному типу.

GetColumnSchema(DbDataReader)

Возвращает схему столбца (DbColumnколлекцию) для .DbDataReader

OfType<TResult>(IEnumerable)

Фильтрует элементы IEnumerable на основе указанного типа.

Применяется к