using (var conn = new SqlConnection(connectionString))
{
var cmd = new SqlCommand("SELECT * FROM mySchema.MyTable", conn);
conn.Open();
var reader = cmd.ExecuteReader();
while(reader.Read())
{...
在调试器中我可以看到我的阅读器有一行 - 我可以看到返回的数据 - 但是 reader.Read
返回 false
所以我的处理代码没有得到打电话。
这似乎是非常基本的“从数据库表中读取行”的东西,所以我错过了什么?我应该直接查看阅读器的行数据还是什么?
最佳答案
如果您让调试器向您显示结果,它会读出读取器并枚举结果。
查看调试器窗口中的注释:
Results View: Expanding the Results View will enumerate the IEnumerable
所以你的调试器已经读出了所有的结果,如果你进入 reader.Read()
没有更多的行可以读取并且 Read()
返回 假的
。
我只是用一个小测试重现了它。当我的调试器读取结果时,我的代码无法再读取它们。如果我不让调试器显示它们,我的代码就可以读取它们。 (qed)
关于c# - DBReader 有行但 Read() 返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38144112/