【发布时间】:2009-08-19 22:05:47
【问题描述】:
我有一些 C# 代码可以动态生成 SQL 查询并通过 IDbCommand.ExecuteScalar() 执行它。这很好用;在数据库中只有一个结果与我的查询匹配,并且始终返回该结果。
但就在最近,作为支持数据库中多个匹配项的重构的第一步,我将对 ExecuteScalar() 的调用替换为对 ExecuteReader() 的调用。设置和数据库访问中的其他所有内容都是相同的。但是返回的 IDataReader 不包含任何数据,并且每当我尝试从中获取数据时都会抛出 InvalidOperationExceptions。
我知道数据还在;当我切换回 ExecuteScalar() 时一切正常。这怎么可能?
【问题讨论】: