标签:sqldatareader sql c
我正在使用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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。