SqlDataReader如何接收数据?

时间:2012-09-27 15:10:51

标签: .net ado.net sqldatareader

以下简单代码使用SqlDataReader检索数据:

    SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=myDB;Integrated Security=True");
    conn.Open();
    SqlCommand cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT [t0].[ID], [t0].[Name] FROM [Persons] AS [t0]";
    SqlDataReader rdr = cmd.ExecuteReader();
    while (rdr.Read())
    {
        Console.WriteLine(rdr["id"] + " " + rdr["name"]);
    }

在代码运行时,我使用Sql Profiler监视数据库。我只看到一个选择命令。

SELECT [t0].[ID], [t0].[Name] FROM [Persons] AS [t0]

因此,似乎SqlDataReader将首先从服务器检索 ALL 数据,然后枚举它们。

这是真的吗?如果数据太多会怎么样?

1 个答案:

答案 0 :(得分:2)

SqlDataReader有一个8千字节的缓冲区。

重复问题:How DataReader works?