IDataRecord 接口
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对每 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。 |