语言

IDataRecord 接口

定义

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

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

示例

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

适用于