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


IDataRecord Интерфейс

Определение

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

public interface class IDataRecord
public interface IDataRecord
type IDataRecord = interface
Public Interface IDataRecord
Производный

Примеры

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

Приложение не создает экземпляр IDataRecord интерфейса напрямую, а создает экземпляр класса, наследующего IDataRecord. Как правило, это делается путем получения DataReader с помощью ExecuteReader метода Command объекта .

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

Поставщики, реализующие , DataReader должны предоставлять данные в типах CLR. Приведение типов определяется для некоторых типов, не включенных в среду CLR. К этим значениям можно обращаться как к альтернативным типам, соответствующим типам CLR. Например, в следующей таблице перечислены рекомендуемые сопоставления типов данных OLE DB с типами CLR с альтернативными типами в скобках.

Тип OLE DB Тип CLR
DBTYPE_BOOL Int16
DBTYPE_BSTR строка
DBTYPE_BYTES byte[]
DBTYPE_CY Decimal
DBTYPE_DATE DateTime
DBTYPE_DBDATE DateTime
DBTYPE_DBTIME DateTime
DBTYPE_DBTIMESTAMP DateTime
DBTYPE_DECIMAL Decimal
DBTYPE_EMPTY null
DBTYPE_ERROR ExternalException
DBTYPE_FILETIME DateTime
DBTYPE_GUID Guid
DBTYPE_HCHAPTER не поддерживается
DBTYPE_I1 SByte
DBTYPE_I2 Int16
DBTYPE_I4 Int32
DBTYPE_I8 Int64
DBTYPE_IDISPATCH object
DBTYPE_IUNKNOWN object
DBTYPE_NULL DBNull.Value
DBTYPE_NUMERIC Decimal
DBTYPE_PROPVARIANT object
DBTYPE_R4 Single
DBTYPE_R8 Double
DBTYPE_STR строка
DBTYPE_UDT не поддерживается
DBTYPE_UI1 byte (Int16)
DBTYPE_UI2 UInt16 (Int32)
DBTYPE_UI4 UInt32 (Int64)
DBTYPE_UI8 UInt64 (decimal)
DBTYPE_VARIANT object
DBTYPE_VARNUMERIC не поддерживается
DBTYPE_WSTR строка

Свойства

FieldCount

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

Item[Int32]

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

Item[String]

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

Методы

GetBoolean(Int32)

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

GetByte(Int32)

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

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

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

GetChar(Int32)

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

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

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

GetData(Int32)

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

GetDataTypeName(Int32)

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

GetDateTime(Int32)

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

GetDecimal(Int32)

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

GetDouble(Int32)

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

GetFieldType(Int32)

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

GetFloat(Int32)

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

GetGuid(Int32)

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

GetInt16(Int32)

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

GetInt32(Int32)

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

GetInt64(Int32)

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

GetName(Int32)

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

GetOrdinal(String)

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

GetString(Int32)

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

GetValue(Int32)

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

GetValues(Object[])

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

IsDBNull(Int32)

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

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