IDataRecord 接口

定义

提供对每 DataReader行中列值的访问,并由访问关系数据库的 .NET 数据提供程序实现。

public interface class IDataRecord
public interface IDataRecord
type IDataRecord = interface
Public Interface IDataRecord
派生

示例

以下示例创建派生类、SqlConnectionSqlCommandSqlDataReader的实例。 该示例读取数据,并将其写出到控制台。 最后,该示例关闭 ,然后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

注解

接口IDataReaderIDataRecord使继承类能够实现类DataReader。 这提供了一种读取结果集的一个或多个仅向前流的方法。 有关类的详细信息 DataReader ,请参阅 使用 DataReader 检索数据

应用程序不直接创建接口的 IDataRecord 实例,而是创建继承 IDataRecord的类的实例。 通常,可以通过获取DataReaderExecuteReader对象的方法Command来执行此操作。

继承 IDataRecord 的类必须实现所有继承的成员,并且通常定义其他成员以添加提供程序特定的功能。

实现 a DataReader 的提供程序需要公开公共语言运行时 (CLR) 类型中的数据。 为 CLR 中未包含的某些类型定义类型强制。 这些值可以作为符合 CLR 类型的替代类型进行访问。 例如,下表列出了从 OLE DB 数据类型到 CLR 类型的建议映射,并在括号中使用备用类型。

OLE DB 类型 CLR 类型
DBTYPE_BOOL Int16
DBTYPE_BSTR 字符串
DBTYPE_BYTES byte[]
DBTYPE_CY 十进制
DBTYPE_DATE 日期时间
DBTYPE_DBDATE(数据库日期类型) 日期时间
DBTYPE_DBTIME (数据库时间类型) 日期时间
DBTYPE_DBTIMESTAMP 日期时间
DBTYPE_DECIMAL 十进制
DBTYPE_EMPTY null
DBTYPE_ERROR(数据库类型错误) ExternalException (外部异常)
DBTYPE_FILETIME 日期时间
DBTYPE_GUID Guid
DBTYPE_HCHAPTER 不支持
DBTYPE_I1 SByte
DBTYPE_I2 Int16
DBTYPE_I4 Int32
DBTYPE_I8 Int64
DBTYPE_IDISPATCH 对象
DBTYPE_IUNKNOWN 对象
DBTYPE_NULL DBNull.Value
DBTYPE_NUMERIC(数值型数据库类型) 十进制
DBTYPE_PROPVARIANT 对象
DBTYPE_R4 Single
DBTYPE_R8 Double
数据库类型_字符串 字符串
DBTYPE_UDT 不支持
DBTYPE_UI1 (数据类型_UI1) 字节 (Int16)
DBTYPE_UI2 UInt16 (Int32)
DBTYPE_UI4 UInt32 (Int64)
DBTYPE_UI8 UInt64 (十进制)
DBTYPE_VARIANT 对象
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。

适用于