【问题标题】:SqlDataReader "Enumeration yielded no results"SqlDataReader“枚举没有结果”
【发布时间】:2012-10-29 07:13:59
【问题描述】:

一直想弄清楚,但我做不到。

我通过 SqlCommand 执行存储过程,返回的 SqlDatareader 对象没有给我结果,但是,如果在调试器中探索对象,我可以看到它们。这是我正在谈论的图像:

在结果视图行中显示“枚举未产生结果”,但在路径中:

base -> base -> ResultView -> [0] -> 非公共成员 -> _values -> [0],1,[2],[3] 显示结果。

有人知道如何获得它们吗?

这是我用来获取特定列的代码:

if (dataReader.Read())
{
   ProjectFolderId = dataReader["ItemID"].ToString();
}

但是 if 返回 false。

【问题讨论】:

  • 有同样的问题。有什么解决办法吗?

标签: c# asp.net sqldatareader


【解决方案1】:

您需要小心:一个阅读器只能被消费一次。通过在预览窗口中显示数据,您很可能在调试器中意外使用了该数据,并且不再可用。

确保它在调试器预览窗口中可见/展开,然后重试。

显示的_values 只是成功读取的最后一行的遗留/剩余部分。

【讨论】:

  • 如何让它们不可见?顺便说一句,我在没有存储过程的情况下执行了查询(直接在 CommandText 属性中,然后在 ExecuteSelect 中),现在正在工作。我相信使用存储过程的过程有些奇怪,你怎么看?
  • @equasar 我怀疑它与存储过程有关——除了设置命令类型之外,API 是相同的;通常,您需要选择性地单击以展开枚举,因为 IDE 知道许多是不可重复的。你有没有点击展开它?
  • 你摇滚,@MarcGravell。我不敢相信调试器会消耗数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多