OracleDataReader OracleDataReader OracleDataReader OracleDataReader Class

Определение

Предоставляет способ чтения потока строк данных из источника только в прямом порядке.Provides a way of reading a forward-only stream of data rows from a data source. Этот класс не наследуется.This class cannot be inherited.

public ref class OracleDataReader sealed : System::Data::Common::DbDataReader
public sealed class OracleDataReader : System.Data.Common.DbDataReader
type OracleDataReader = class
    inherit DbDataReader
Public NotInheritable Class OracleDataReader
Inherits DbDataReader
Наследование
OracleDataReaderOracleDataReaderOracleDataReaderOracleDataReader

Примеры

В следующем примере создаются OracleConnection OracleCommand, и OracleDataReader.The following example creates an OracleConnection, an OracleCommand, and an OracleDataReader. Пример считывает данные, записывая их на консоль.The example reads through the data, writing it out to the console. Наконец, в примере закрывается OracleDataReader, OracleConnectionа затем.Finally, the example closes the OracleDataReader, then the 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 объекта, а не напрямую использовать конструктор.To create an OracleDataReader, you must call the ExecuteReader method of the OracleCommand object, rather than directly using a constructor.

Изменения, внесенные в результирующий набор другим процессом или потоком во время чтения данных, могут быть видимы для пользователя OracleDataReader.Changes made to a resultset by another process or thread while data is being read may be visible to the user of the OracleDataReader.

IsClosedи RecordsAffected являются единственными свойствами, которые можно вызывать OracleDataReader после закрытия.IsClosed and RecordsAffected are the only properties that you can call after the OracleDataReader is closed. В некоторых случаях необходимо вызвать метод Close , прежде чем можно будет вызвать. RecordsAffectedIn some cases, you must call Close before you can call RecordsAffected.

В любой момент OracleDataReader времени можно открыть более одного раза.More than one OracleDataReader can be open at any given time.

В следующих двух примерах Visual Basic показано, как использовать OracleDataReader для получения Oracle. REF CURSORThe following two Visual Basic examples demonstrate how to use an OracleDataReader to retrieve an Oracle REF CURSOR. В этих примерах используются таблицы, определенные в схеме Oracle Скотт/Tiger, и требуется следующий пакет PL/SQL и текст пакета.These examples use tables that are defined in the Oracle Scott/Tiger schema, and require the following PL/SQL package and package body. Их необходимо создать на сервере, чтобы использовать примеры.You must create these on your server to use the examples.

Создайте на сервере Oracle следующий пакет Oracle.Create the following Oracle package on the Oracle server.

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 the following Oracle package body on the Oracle server.

  
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виде.This Visual Basic example executes a PL/SQL stored procedure that returns a REF CURSOR parameter, and reads the value as an 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с помощью.This Visual Basic example executes a PL/SQL stored procedure that returns two REF CURSOR parameters, and reads the values using an 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, которая загружается с данными.This C# example creates an Oracle table and loads it with data. Этот пример необходимо выполнить перед выполнением следующего примера, в котором демонстрируется использование OracleDataReader для доступа к данным с помощью структур OracleType.You must run this example prior to running the subsequent example, which demonstrates using an OracleDataReader to access the data using OracleType structures.

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();  
   }  
}  

OracleDataReader В C# этом примере используется для доступа к данным и используется несколько OracleType структур для вывода данных.This C# example uses an OracleDataReader to access data, and uses several OracleType structures to display the data.

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 Depth Depth Depth

Возвращает значение, показывающее глубину вложенности для текущей строки.Gets a value indicating the depth of nesting for the current row.

FieldCount FieldCount FieldCount FieldCount

Возвращает число столбцов в текущей строке.Gets the number of columns in the current row.

HasRows HasRows HasRows HasRows

Получает значение, указывающее, содержит ли объект OracleDataReader одну или несколько строк.Gets a value indicating whether the OracleDataReader contains one or more rows.

IsClosed IsClosed IsClosed IsClosed

Указывает, закрыт ли объект OracleDataReader.Indicates whether the OracleDataReader is closed.

Item[Int32] Item[Int32] Item[Int32] Item[Int32]

Возвращает значение указанного столбца в собственном формате при наличии заданного порядкового номера столбца.Gets the value of the specified column in its native format given the column ordinal.

Item[String] Item[String] Item[String] Item[String]

Возвращает значение заданного столбца в собственном формате при наличии заданного имени столбца.Gets the value of the specified column in its native format given the column name.

RecordsAffected RecordsAffected RecordsAffected RecordsAffected

Возвращает число строк, которые были изменены, вставлены или удалены инструкцией SQL.Gets the number of rows changed, inserted, or deleted by execution of the SQL statement.

Методы

Close() Close() Close() Close()

Закрывает объект OracleDataReader.Closes the OracleDataReader object.

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

Создает объект, который содержит всю необходимую информацию для создания прокси-сервера, используемого для взаимодействия с удаленным объектом.Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Освобождает ресурсы, используемые данным объектом.Releases the resources that are used by this object.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetBoolean(Int32) GetBoolean(Int32) GetBoolean(Int32) GetBoolean(Int32)

Возвращает значение указанного столбца в виде логического значения.Gets the value of the specified column as a Boolean.

GetByte(Int32) GetByte(Int32) GetByte(Int32) GetByte(Int32)

Возвращает значение указанного столбца в виде байта.Gets the value of the specified column as a byte.

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

Считывает поток байтов из указанного смещения столбца в буфер в виде массива, начиная с заданного смещения буфера.Reads a stream of bytes from the specified column offset into the buffer as an array, starting at the given buffer offset.

GetChar(Int32) GetChar(Int32) GetChar(Int32) GetChar(Int32)

Возвращает значение указанного столбца в виде символа.Gets the value of the specified column as a character.

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

Считывает поток символов из указанного смещения столбца в буфер как массив, начиная с заданного смещения буфера.Reads a stream of characters from the specified column offset into the buffer as an array, starting at the given buffer offset.

GetData(Int32) GetData(Int32) GetData(Int32) GetData(Int32)

Возвращает IDataReader для указанного порядкового номера столбца.Returns an IDataReader for the specified column ordinal.

GetDataTypeName(Int32) GetDataTypeName(Int32) GetDataTypeName(Int32) GetDataTypeName(Int32)

Получает имя исходного типа данных.Gets the name of the source data type.

GetDateTime(Int32) GetDateTime(Int32) GetDateTime(Int32) GetDateTime(Int32)

Возвращает значение указанного столбца в виде объекта DateTime.Gets the value of the specified column as a DateTime object.

GetDecimal(Int32) GetDecimal(Int32) GetDecimal(Int32) GetDecimal(Int32)

Возвращает значение указанного столбца в виде объекта Decimal.Gets the value of the specified column as a Decimal object.

GetDouble(Int32) GetDouble(Int32) GetDouble(Int32) GetDouble(Int32)

Возвращает значение заданного столбца в виде числа с плавающей запятой двойной точности.Gets the value of the specified column as a double-precision floating point number.

GetEnumerator() GetEnumerator() GetEnumerator() GetEnumerator()

Возвращает перечислитель IEnumerator, который может использоваться для просмотра строк в модуле чтения данных.Returns an IEnumerator that can be used to iterate through the rows in the data reader.

GetFieldType(Int32) GetFieldType(Int32) GetFieldType(Int32) GetFieldType(Int32)

Возвращает тип Type, который является типом данных объекта.Gets the Type that is the data type of the object.

GetFloat(Int32) GetFloat(Int32) GetFloat(Int32) GetFloat(Int32)

Возвращает значение указанного столбца в виде числа с плавающей запятой с одиночной точностью.Gets the value of the specified column as a single-precision floating-point number.

GetGuid(Int32) GetGuid(Int32) GetGuid(Int32) GetGuid(Int32)

Возвращает значение заданного столбца в виде глобально-уникального идентификатора GUID.Gets the value of the specified column as a globally-unique identifier (GUID).

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Inherited from Object)
GetInt16(Int32) GetInt16(Int32) GetInt16(Int32) GetInt16(Int32)

Получает значение заданного столбца в виде 16-битового целого числа со знаком.Gets the value of the specified column as a 16-bit signed integer.

GetInt32(Int32) GetInt32(Int32) GetInt32(Int32) GetInt32(Int32)

Возвращает значение указанного столбца в виде 32-разрядного целого числа со знаком.Gets the value of the specified column as a 32-bit signed integer.

GetInt64(Int32) GetInt64(Int32) GetInt64(Int32) GetInt64(Int32)

Возвращает значение указанного столбца в виде 64-разрядного целого числа со знаком.Gets the value of the specified column as a 64-bit signed integer.

GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

Извлекает объект обслуживания во время существования, который управляет политикой времени существования данного экземпляра.Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetName(Int32) GetName(Int32) GetName(Int32) GetName(Int32)

Возвращает имя заданного столбца.Gets the name of the specified column.

GetOracleBFile(Int32) GetOracleBFile(Int32) GetOracleBFile(Int32) GetOracleBFile(Int32)

Получает значение заданного столбца в виде объекта OracleBFile.Gets the value of the specified column as an OracleBFile object.

GetOracleBinary(Int32) GetOracleBinary(Int32) GetOracleBinary(Int32) GetOracleBinary(Int32)

Получает значение заданного столбца в виде объекта OracleBinary.Gets the value of the specified column as an OracleBinary object.

GetOracleDateTime(Int32) GetOracleDateTime(Int32) GetOracleDateTime(Int32) GetOracleDateTime(Int32)

Получает значение заданного столбца в виде объекта OracleDateTime.Gets the value of the specified column as an OracleDateTime object.

GetOracleLob(Int32) GetOracleLob(Int32) GetOracleLob(Int32) GetOracleLob(Int32)

Получает значение заданного столбца в виде объекта OracleLob.Gets the value of the specified column as an OracleLob object.

GetOracleMonthSpan(Int32) GetOracleMonthSpan(Int32) GetOracleMonthSpan(Int32) GetOracleMonthSpan(Int32)

Получает значение заданного столбца в виде объекта OracleMonthSpan.Gets the value of the specified column as an OracleMonthSpan object.

GetOracleNumber(Int32) GetOracleNumber(Int32) GetOracleNumber(Int32) GetOracleNumber(Int32)

Получает значение заданного столбца в виде объекта OracleNumber.Gets the value of the specified column as an OracleNumber object.

GetOracleString(Int32) GetOracleString(Int32) GetOracleString(Int32) GetOracleString(Int32)

Получает значение заданного столбца в виде объекта OracleString.Gets the value of the specified column as an OracleString object.

GetOracleTimeSpan(Int32) GetOracleTimeSpan(Int32) GetOracleTimeSpan(Int32) GetOracleTimeSpan(Int32)

Получает значение заданного столбца в виде объекта OracleTimeSpan.Gets the value of the specified column as an OracleTimeSpan object.

GetOracleValue(Int32) GetOracleValue(Int32) GetOracleValue(Int32) GetOracleValue(Int32)

Возвращает значение столбца в виде заданного порядкового номера в формате Oracle.Gets the value of the column at the specified ordinal in its Oracle format.

GetOracleValues(Object[]) GetOracleValues(Object[]) GetOracleValues(Object[]) GetOracleValues(Object[])

Возвращает все столбцы атрибутов в текущей строке в формате Oracle.Gets all the attribute columns in the current row in Oracle format.

GetOrdinal(String) GetOrdinal(String) GetOrdinal(String) GetOrdinal(String)

Возвращает порядковый номер столбца при наличии заданного имени столбца.Gets the column ordinal, given the name of the column.

GetProviderSpecificFieldType(Int32) GetProviderSpecificFieldType(Int32) GetProviderSpecificFieldType(Int32) GetProviderSpecificFieldType(Int32)

Получает Object, который представляет собой конкретный тип поля базового поставщика.Gets an Object that is a representation of the underlying provider specific field type.

GetProviderSpecificValue(Int32) GetProviderSpecificValue(Int32) GetProviderSpecificValue(Int32) GetProviderSpecificValue(Int32)

Получает Object, который представляет собой конкретный тип поля базового поставщика.Gets an Object that is a representation of the underlying provider specific field type.

GetProviderSpecificValues(Object[]) GetProviderSpecificValues(Object[]) GetProviderSpecificValues(Object[]) GetProviderSpecificValues(Object[])

Возвращает массив объектов, которые представляют собой значения типа, специфического для базового поставщика.Gets an array of objects that are a representation of the underlying provider specific values.

GetSchemaTable() GetSchemaTable() GetSchemaTable() GetSchemaTable()

Возвращает DataTable, описывающий метаданные о столбцах OracleDataReader.Returns a DataTable that describes the column metadata of the OracleDataReader.

GetString(Int32) GetString(Int32) GetString(Int32) GetString(Int32)

Возвращает значение заданного столбца в виде строки.Gets the value of the specified column as a string.

GetTimeSpan(Int32) GetTimeSpan(Int32) GetTimeSpan(Int32) GetTimeSpan(Int32)

Возвращает значение заданного столбца в виде объекта System.TimeSpan.Gets the value of the specified column as a System.TimeSpan.

GetType() GetType() GetType() GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Inherited from Object)
GetValue(Int32) GetValue(Int32) GetValue(Int32) GetValue(Int32)

Получает значение столбца с указанным порядковом номером в собственном формате.Gets the value of the column at the specified ordinal in its native format.

GetValues(Object[]) GetValues(Object[]) GetValues(Object[]) GetValues(Object[])

Заполняет массив объектов значениями столбцов текущей строки.Populates an array of objects with the column values of the current row.

InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

Получает объект службы времени существования для управления политикой времени существования для этого экземпляра.Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
IsDBNull(Int32) IsDBNull(Int32) IsDBNull(Int32) IsDBNull(Int32)

Получает значение, указывающее, содержит ли столбец несуществующие или пропущенные значения.Gets a value indicating whether the column contains non-existent or missing values.

MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

Создает неполную копию текущего объекта MarshalByRefObject.Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
NextResult() NextResult() NextResult() NextResult()

Перемещает OracleDataReader к следующему результату.Advances the OracleDataReader to the next result

Read() Read() Read() Read()

Перемещает OracleDataReader к следующей записи.Advances the OracleDataReader to the next record.

ToString() ToString() ToString() ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Inherited from Object)

Явные реализации интерфейса

IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator() IEnumerable.GetEnumerator()

Возвращает перечислитель, который осуществляет итерацию по коллекции.Returns an enumerator that iterates through a collection.

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