DataReader有行和数据,试图从中读取“没有数据存在”

时间:2011-06-27 13:54:25

标签: c# sqldatareader

我多年没有使用DataReaders(我更喜欢使用ORM),但我不得不在工作。我拉回行,检查HasRows是否为真;此时调试并检查阅读器显示我的数据存在。

现在问题出现了:我打电话给reader.Read()的那一刻,试图扩展结果说“枚举没有产生任何结果”或其他什么,我得到“无数据存在时读取无效的尝试”。错误。如果我不调用Read()(这是默认情况,因为DataReader在第一条记录之前启动),我会得到同样的东西。

我记不起处理这个问题的正确方法了;当我检查HasRows时,数据,但是当我打电话给Read之后或之后我尝试读取数据时,它已经消失了,这没有任何意义我不打电话给Read,读者仍然应该在第一个记录之前,如果设置的属性是在第一个记录(SingleRow?我忘了它的名字)设置的,那么我应该能够在不调用Read的情况下读取行,但是两种方式似乎都将移动到包含数据的行。

我忘记了什么?代码相当简单:

TemplateFile file = null;
using (DbDataReader reader = ExecuteDataReaderProc("GetTemplateByID", idParam)) 
{ 
    if (reader.HasRows) // reader has data at this point - verified with debugger
    { 
        reader.Read(); // loses data at this point if I call Read()
        template = new TemplateFile 
        {
            FileName = Convert.ToString(reader["FileName"]) // whether or not I call
                                                            // Read, says no data here
        };
    }
}

2 个答案:

答案 0 :(得分:10)

答案 1 :(得分:0)