SqlDataReader永远不会返回False
作者:互联网
我正在使用SqlDataReader编写带有几个工作表的Excel工作簿.每个工作表都有一个页眉,正文和页脚,因此我在while循环中使用了while循环.
问题是reader.Read()永远不会为我返回false,因此eof永远不会设置为false.在文件末尾,由于读取器为空,因此尝试写入标头时出现错误.
具体的错误消息是:
Invalid attempt to read when no data is present.
请查看我的代码,如果可以的话请提供帮助.
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;否则为假.
问题出在您的循环条件上,它仅执行一次(即使有更多行),修改您的while条件并对其进行修改.
标签:sqldatareader,sql,c 来源: https://codeday.me/bug/20191026/1939294.html