通常,当我用 C# 编码时,我要么采用SqlDataReader以下两种方式之一编写:
reader.Read();
if (reader.HasRows)
{
// Code here
}
reader.Close();
Run Code Online (Sandbox Code Playgroud)
或者:
while (reader.Read())
{
// Code here
}
Run Code Online (Sandbox Code Playgroud)
首先,我打开SqlDataReader并关闭它。第二个我只是reader.Read()在 while 循环中被调用。
我的问题是:reader.Read()读取所有数据后调用是否会自行关闭?或者我还应该打电话吗reader.Close()?
读取所有数据后,调用 reader.Read() 是否会自行关闭?
No.Read()方法只是将光标移动到下一行。默认位置在第一条记录之前。这就是为什么您必须使用此方法来读取阅读器中的任何数据。
我还应该打电话给 reader.Close();
是的,但取而代之的是,使用using语句来自动处理你的SqlDataReader。
using(var reader = command.ExecuteReader())
{
while (reader.Read())
{
// Code here
}
} <-- your reader will be disposed here.
Run Code Online (Sandbox Code Playgroud)