IDataReader 接口

定义

提供一种读取结果集(通过对数据源执行命令获取)的一个或多个只进流的方法,并由访问关系数据库的 .NET 数据提供程序实现。

public interface class IDataReader : IDisposable, System::Data::IDataRecord
public interface IDataReader : IDisposable, System.Data.IDataRecord
type IDataReader = interface
    interface IDataRecord
    interface IDisposable
type IDataReader = interface
    interface IDisposable
    interface IDataRecord
Public Interface IDataReader
Implements IDataRecord, IDisposable
派生
实现

示例

以下示例创建派生类、 SqlConnectionSqlCommand生类和 SqlDataReader实例。 该示例读取数据,将其写出到控制台。 最后,该示例关闭 SqlDataReader,然后关闭 SqlConnection

using System;
using System.Data;
using System.Data.SqlClient;

class Program
{
    static void Main()
    {
        string str = "Data Source=(local);Initial Catalog=Northwind;"
            + "Integrated Security=SSPI";
        ReadOrderData(str);
    }

    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]));
    }
}
Option Explicit On
Option Strict On

Imports System.Data
Imports System.Data.SqlClient

Module Module1

    Sub Main()
        Dim str As String = "Data Source=(local);Initial Catalog=Northwind;" _
       & "Integrated Security=SSPI;"
        ReadOrderData(str)
    End Sub

    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

End Module

注解

IDataReaderIDataRecord接口允许继承类实现类DataReader,该类提供读取结果集的一个或多个仅向前流的方法。 有关类的详细信息 DataReader ,请参阅 使用 DataReader 检索数据

应用程序不直接创建接口的 IDataReader 实例,而是创建继承 IDataReader的类的实例。

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

在读取数据时对另一个进程或线程对结果集所做的更改可能对实现 a 的 IDataReader类的用户可见。 但是,精确行为既依赖于提供程序又依赖于时间。

实施者说明

若要在.NET Framework数据提供程序之间提升一致性,请在 Form Prv Command 中命名继承类,其中Prv为特定.NET Framework数据提供程序命名空间中的所有类提供统一前缀。 例如,Sql命名空间中System.Data.SqlClient类的SqlDataAdapter前缀。

用户不会直接创建类的 DataReader 实例。 相反,它们通过ExecuteReader对象的方法Command获取DataReader实例。 因此,应将构造函数标记为 DataReader 内部构造函数。

属性

Depth

获取一个值,该值指示当前行的嵌套深度。

FieldCount

获取当前行中的列数。

(继承自 IDataRecord)
IsClosed

获取一个值,该值指示数据读取器是否已关闭。

Item[Int32]

获取位于指定索引处的列。

(继承自 IDataRecord)
Item[String]

获取具有指定名称的列。

(继承自 IDataRecord)
RecordsAffected

通过执行 SQL 语句获取更改、插入或删除的行数。

方法

Close()

关闭 IDataReader 对象。

Dispose()

执行与释放或重置非托管资源关联的应用程序定义的任务。

(继承自 IDisposable)
GetBoolean(Int32)

获取指定列的布尔值形式的值。

(继承自 IDataRecord)
GetByte(Int32)

获取指定列的 8 位无符号整数值。

(继承自 IDataRecord)
GetBytes(Int32, Int64, Byte[], Int32, Int32)

将字节流从指定列偏移量读入到缓冲区中,将其作为从给定缓冲区偏移量开始的数组。

(继承自 IDataRecord)
GetChar(Int32)

获取指定列的字符值。

(继承自 IDataRecord)
GetChars(Int32, Int64, Char[], Int32, Int32)

将字符流从指定列偏移量读入到缓冲区中,将其作为从给定缓冲区偏移量开始的数组。

(继承自 IDataRecord)
GetData(Int32)

返回指定列序号的 IDataReader

(继承自 IDataRecord)
GetDataTypeName(Int32)

获取指定字段的数据类型信息。

(继承自 IDataRecord)
GetDateTime(Int32)

获取指定字段的日期和时间数据值。

(继承自 IDataRecord)
GetDecimal(Int32)

获取指定字段的固定位置数值。

(继承自 IDataRecord)
GetDouble(Int32)

获取指定字段的双精度浮点数。

(继承自 IDataRecord)
GetFieldType(Int32)

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

(继承自 IDataRecord)
GetFloat(Int32)

获取指定字段的单精度浮点数。

(继承自 IDataRecord)
GetGuid(Int32)

返回指定字段的 GUID 值。

(继承自 IDataRecord)
GetInt16(Int32)

获取指定字段的 16 位带符号整数值。

(继承自 IDataRecord)
GetInt32(Int32)

获取指定字段的 32 位带符号整数值。

(继承自 IDataRecord)
GetInt64(Int32)

获取指定字段的 64 位带符号整数值。

(继承自 IDataRecord)
GetName(Int32)

获取要查找的字段的名称。

(继承自 IDataRecord)
GetOrdinal(String)

返回已命名字段的索引。

(继承自 IDataRecord)
GetSchemaTable()

返回一个 DataTable,它描述 IDataReader 的列元数据。

若执行的命令未返回结果集或者 NextResult() 返回 false,则返回 null

GetString(Int32)

获取指定字段的字符串值。

(继承自 IDataRecord)
GetValue(Int32)

返回指定字段的值。

(继承自 IDataRecord)
GetValues(Object[])

使用当前记录的列值填充对象的数组。

(继承自 IDataRecord)
IsDBNull(Int32)

返回指定字段是否设置为 null。

(继承自 IDataRecord)
NextResult()

在读取一批 SQL 语句的结果时,使数据读取器前进到下一个结果。

Read()

IDataReader 前进到下一条记录。

适用于