IDataRecord 接口
使 DataReader 能访问每一行中的列值,由访问关系数据库的 .NET Framework 数据提供程序实现。
**命名空间:**System.Data
**程序集:**System.Data(在 system.data.dll 中)
语法
声明
Public Interface IDataRecord
用法
Dim instance As IDataRecord
public interface IDataRecord
public interface class IDataRecord
public interface IDataRecord
public interface IDataRecord
备注
IDataReader 和 IDataRecord 接口可使继承类实现 DataReader 类。这样就提供了读取一个或多个结果集只进流的方法。有关 DataReader 类的更多信息,请参见 使用 DataReader 检索数据。有关如何实现 .NET Framework 数据提供程序的更多信息,请参见 Implementing a .NET Framework Data Provider。
应用程序不直接创建 IDataRecord 接口的实例,而是创建继承 IDataRecord 的类的实例。通常,这是通过 Command 对象的 ExecuteReader 方法获取 DataReader 来实现的。
继承 IDataRecord 的类必须实现所有继承成员,且通常定义更多的成员,以添加提供程序特定的功能。
要求实现 DataReader 的提供程序公开公共语言运行库 (CLR) 类型的数据。为某些不包括在 CLR 中的类型定义了类型强制。这些值可以作为符合 CLR 类型的替换类型访问。作为一个示例,下表列出了从 OLE DB 数据类型到 CLR 类型的建议映射,并且在“CLR 类型”列中在括号内列出了替换类型。
OLE DB 类型 |
CLR 类型 |
---|---|
DBTYPE_BOOL |
Int16 |
DBTYPE_BSTR |
string |
DBTYPE_BYTES |
byte[] |
DBTYPE_CY |
Decimal |
DBTYPE_DATE |
DateTime |
DBTYPE_DBDATE |
DateTime |
DBTYPE_DBTIME |
DateTime |
DBTYPE_DBTIMESTAMP |
DateTime |
DBTYPE_DECIMAL |
Decimal |
DBTYPE_EMPTY |
空 |
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 |
Decimal |
DBTYPE_PROPVARIANT |
object |
DBTYPE_R4 |
Single |
DBTYPE_R8 |
Double |
DBTYPE_STR |
string |
DBTYPE_UDT |
不受支持 |
DBTYPE_UI1 |
byte (Int16) |
DBTYPE_UI2 |
UInt16 (Int32) |
DBTYPE_UI4 |
UInt32 (Int64) |
DBTYPE_UI8 |
UInt64 (Decimal) |
DBTYPE_VARIANT |
object |
DBTYPE_VARNUMERIC |
不受支持 |
DBTYPE_WSTR |
string |
示例
下面的示例创建派生类 SqlConnection、SqlCommand 和 SqlDataReader 的实例。该示例读取全部数据,并将这些数据写到控制台。最后,该示例先关闭 SqlDataReader,然后关闭 SqlConnection。
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()
Console.WriteLine(String.Format("{0}, {1}", _
reader(0), reader(1)))
End While
' Call Close when done reading.
reader.Close()
End Using
End Sub
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())
{
Console.WriteLine(String.Format("{0}, {1}",
reader[0], reader[1]));
}
// Call Close when done reading.
reader.Close();
}
}
平台
Windows 98、Windows 2000 SP4、Windows CE、Windows Millennium Edition、Windows Mobile for Pocket PC、Windows Mobile for Smartphone、Windows Server 2003、Windows XP Media Center Edition、Windows XP Professional x64 Edition、Windows XP SP2、Windows XP Starter Edition
.NET Framework 并不是对每个平台的所有版本都提供支持。有关受支持版本的列表,请参见系统要求。
版本信息
.NET Framework
受以下版本支持:2.0、1.1、1.0
.NET Compact Framework
受以下版本支持:2.0、1.0