SqlDataReader从不返回False
本文关键字:False 返回 SqlDataReader | 更新日期: 2023-09-27 18:00:13
我正在使用SqlDataReader
编写一个包含多个工作表的Excel工作簿。每个工作表都有一个页眉、一个正文和一个页脚,所以我在while循环中使用while循环。
问题是reader.Read()
对我来说永远不会返回false,所以eof永远不会设置为false。在文件的末尾,由于读卡器是空的,所以在尝试写入标头时出现错误。
具体错误消息为:
不存在数据时读取的尝试无效。
请查看我的代码并在可能的情况下提供帮助。
reader = cmd.ExecuteReader();
bool eof = false;
bool first = true;
while (!eof)
{
// write a header
// set newHeaderCondition from the Reader -- error occurs here
if (first)
{
reader.Read();
first = false;
}
do
{
// write row onto spreadsheet
eof = reader.Read(); ---- THIS IS NEVER FALSE
} while (!eof && (reader[0] == newHeaderCondition ));
// write footer that doesn't contain any reader data
if (!eof )
{
// create a new worksheet
}
}
reader.Close();
SqlDataReader.Read
将读取器前进到下一条记录,只要有更多的行,就返回true
;否则为CCD_ 5。
问题出在循环条件上,它只执行一次(即使有更多行),修改while条件并修改它。
我不完全理解你描述的行为,但我怀疑你误解了你的观察结果。
一个明显的错误是您给eof
分配了错误的值。当仍有数据时,将true
分配给eof
,当没有数据时,则将false
分配给CCD。
你的意思可能是:
eof = !reader.Read();