Поделиться через


IDataReader Интерфейс

Определение

Предоставляет средства чтения одного или нескольких прямонаправленных потоков наборов результатов, полученных вследствие выполнения команды в источнике данных. Реализацию осуществляют поставщики данных .NET, которые имеют доступ к реляционным базам данных.

public interface class IDataReader : IDisposable, System::Data::IDataRecord
public interface IDataReader : IDisposable, System.Data.IDataRecord
type IDataReader = interface
    interface IDataRecord
    interface IDisposable
type IDataReader = interface
    interface IDisposable
    interface IDataRecord
Public Interface IDataReader
Implements IDataRecord, IDisposable
Производный
Реализации

Примеры

В следующем примере создаются экземпляры производных классов , SqlConnectionSqlCommandи SqlDataReader. Этот пример считывает данные, записывая их в консоль. Наконец, пример закрывает SqlDataReader, а затем .SqlConnection

private static void ReadOrderData(string connectionString)
{
    string queryString =
        "SELECT OrderID, CustomerID FROM dbo.Orders;";

    using (SqlConnection connection =
               new SqlConnection(connectionString))
    {
        SqlCommand command =
            new SqlCommand(queryString, connection);
        connection.Open();

        SqlDataReader reader = command.ExecuteReader();

        // Call Read before accessing data.
        while (reader.Read())
        {
            ReadSingleRow((IDataRecord)reader);
        }

        // Call Close when done reading.
        reader.Close();
    }
}

private static void ReadSingleRow(IDataRecord dataRecord)
{
    Console.WriteLine(String.Format("{0}, {1}", dataRecord[0], dataRecord[1]));
}
Private Sub ReadOrderData(ByVal connectionString As String)
    Dim queryString As String = _
        "SELECT OrderID, CustomerID FROM dbo.Orders;"

    Using connection As New SqlConnection(connectionString)
        Dim command As New SqlCommand(queryString, connection)
        connection.Open()

        Dim reader As SqlDataReader = command.ExecuteReader()

        ' Call Read before accessing data.
        While reader.Read()
            ReadSingleRow(CType(reader, IDataRecord))
        End While

        ' Call Close when done reading.
        reader.Close()
    End Using
End Sub

Private Sub ReadSingleRow(ByVal record As IDataRecord)
   Console.WriteLine(String.Format("{0}, {1}", record(0), record(1)))
End Sub

Комментарии

Интерфейсы IDataReader и IDataRecord позволяют наследуемому классу реализовать DataReader класс, который предоставляет средства чтения одного или нескольких потоков результирующих наборов, доступных только вперед. Дополнительные сведения о DataReader классах см. в разделе Извлечение данных с помощью DataReader.

Приложение не создает экземпляр IDataReader интерфейса напрямую, а создает экземпляр класса, наследующего IDataReader.

Классы, которые наследуются IDataReader , должны реализовывать наследуемые члены и, как правило, определять дополнительные члены для добавления функций, зависящих от поставщика.

Изменения, внесенные в результирующий набор другим процессом или потоком во время чтения данных, могут быть видны пользователю класса, реализующего IDataReader. Однако точное поведение зависит как от поставщика, так и от времени.

Примечания для тех, кто реализует этот метод

Чтобы повысить согласованность между платформа .NET Framework поставщиками данных, наследующий класс назовите в форме Prv Command, где Prv — это универсальный префикс, предоставленный всем классам в определенном пространстве имен поставщика данных платформа .NET Framework. Например, Sql — это префикс SqlDataAdapter класса в System.Data.SqlClient пространстве имен .

Пользователи не создают экземпляр класса напрямую DataReader . Вместо этого они получают DataReader экземпляр с помощью ExecuteReader метода Command объекта . Поэтому конструкторы следует пометить DataReader как внутренние.

Свойства

Depth

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

FieldCount

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

(Унаследовано от IDataRecord)
IsClosed

Возвращает значение, которое указывает, является ли модуль чтения закрытым.

Item[Int32]

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

(Унаследовано от IDataRecord)
Item[String]

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

(Унаследовано от IDataRecord)
RecordsAffected

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

Методы

Close()

Закрывает объект IDataReader.

Dispose()

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

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

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

(Унаследовано от IDataRecord)
GetByte(Int32)

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

(Унаследовано от IDataRecord)
GetBytes(Int32, Int64, Byte[], Int32, Int32)

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

(Унаследовано от IDataRecord)
GetChar(Int32)

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

(Унаследовано от IDataRecord)
GetChars(Int32, Int64, Char[], Int32, Int32)

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

(Унаследовано от IDataRecord)
GetData(Int32)

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

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

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

(Унаследовано от IDataRecord)
GetDateTime(Int32)

Возвращает значение даты и времени для указанного поля.

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

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

(Унаследовано от IDataRecord)
GetDouble(Int32)

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

(Унаследовано от IDataRecord)
GetFieldType(Int32)

Возвращает сведения Type о типе Object, который будет возвращен из GetValue(Int32).

(Унаследовано от IDataRecord)
GetFloat(Int32)

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

(Унаследовано от IDataRecord)
GetGuid(Int32)

Возвращает значение GUID указанного поля.

(Унаследовано от IDataRecord)
GetInt16(Int32)

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

(Унаследовано от IDataRecord)
GetInt32(Int32)

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

(Унаследовано от IDataRecord)
GetInt64(Int32)

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

(Унаследовано от IDataRecord)
GetName(Int32)

Возвращает имя для поля, которое необходимо найти.

(Унаследовано от IDataRecord)
GetOrdinal(String)

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

(Унаследовано от IDataRecord)
GetSchemaTable()

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

Возвращает null, если выполненная команда не вернула результирующий набор или если NextResult() возвращает false.

GetString(Int32)

Получает значение строки заданного ключа.

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

Возвращает значение указанного поля.

(Унаследовано от IDataRecord)
GetValues(Object[])

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

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

Возвращает логическое значение, показывающее, имеет ли указанное поле значение null.

(Унаследовано от IDataRecord)
NextResult()

Перемещает модуль чтения данных к следующему результату при чтении результатов из пакета инструкций SQL.

Read()

Перемещает IDataReader к следующей записи.

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