数据库
首页 > 数据库> > SqlDataReader永远不会返回False

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