IDataRecord 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 DataReader
提供对每行中的列值的访问权限,并由访问关系数据库的 .NET 数据提供程序实现。
public interface class IDataRecord
public interface IDataRecord
type IDataRecord = interface
Public Interface IDataRecord
- 派生
示例
以下示例创建派生类 、 SqlCommand和 SqlDataReader的SqlConnection实例。 该示例读取数据,将其写出到控制台。 最后,该示例关闭 , 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实例。 通常,可以通过 对象的 方法Command
获取 DataReader
ExecuteReader
来执行此操作。
继承 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。 |