c# - DBReader 有行但 Read() 返回 false

标签 c# sql .net sql-server dbconnection

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/

相关文章:

c# - 具有相同标识的多个程序集。 .NETFramework 门面

c# - Visual Studio 2010 专业版 : class diagram tool

sql - 如何从 Oracle 中的日期中减去小时数,因此它也会影响当天

c# - C# 中的斐波那契、二进制或二项式堆?

c# - .NET 图形数据库

c# - ASP.NET mvc html 列显示

c# - 如何在派生 Controller 操作上添加不同的操作过滤器?

sql - 选择表中最后插入的 `n` 记录 - oracle

php - #1111 - 在 case 语句 mysql 中组函数的使用无效?

c# - 在 C# 中解析带有文字的文本文件