以下简单代码使用 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 将首先从服务器检索所有数据,然后枚举它们。
真的吗?如果数据太多怎么办?