以下简单代码使用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 数据,然后枚举它们。
这是真的吗?如果数据太多会怎么样?