2

以下简单代码使用 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 将首先从服务器检索所有数据,然后枚举它们。

真的吗?如果数据太多怎么办?

4

1 回答 1

2

SqlDataReader 有一个 8 KB 的缓冲区。

重复问题:DataReader 如何工作?

于 2012-09-27T15:16:28.617 回答