IDataRecord 接口

定义

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

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

示例

以下示例创建派生类 、 SqlCommandSqlDataReaderSqlConnection实例。 该示例读取数据,将其写出到控制台。 最后,该示例关闭 , 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实例。 通常,可以通过 对象的 方法Command获取 DataReaderExecuteReader 来执行此操作。

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

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

OLE DB 类型 CLR 类型
DBTYPE_BOOL Int16
DBTYPE_BSTR 字符串
DBTYPE_BYTES byte[]
DBTYPE_CY 小数
DBTYPE_DATE DateTime
DBTYPE_DBDATE DateTime
DBTYPE_DBTIME DateTime
DBTYPE_DBTIMESTAMP DateTime
DBTYPE_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 小数
DBTYPE_PROPVARIANT object
DBTYPE_R4 Single
DBTYPE_R8 Double
DBTYPE_STR 字符串
DBTYPE_UDT 不支持
DBTYPE_UI1 字节 (Int16)
DBTYPE_UI2 UInt16 (Int32)
DBTYPE_UI4 UInt32 (Int64)
DBTYPE_UI8 UInt64 (十进制)
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)

获取对应于会从 GetValue(Int32) 返回的 Object 类型的 Type 信息。

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。

适用于