我正在使用ADO访问SQL Server数据库。
我定义记录集打击:
_RecordsetPtr m_pRecordset;
打开表的记录集后,我尝试开始循环:
while (!m_pRecordset->ADOEOF)
{
…(do some tasks) …
m_pRecordset->MoveNext();
}
但是,在第44行中,调用m_pRecordset-> MoveNext()时,它将引发异常,指示下一行(行45)中的值无效。然后异常将中止整个循环。如何跳过带有无效值的行并继续到无效行之后的行?
谢谢
答案 0 :(得分:0)
由于MoveNext
会引发异常,因此您可以从将该调用嵌入try
/ catch
块开始。捕获异常时,您想忽略该记录并继续进行下一个记录。可以通过几种方式处理。
一种方法是使用一个标志来指示您是否具有有效的行,然后在执行所有“执行某些任务”任务之前进行检查。
另一种方法是将try
/ catch
块放入一个循环中,如果成功读取一行,则中断该循环,如果失败,则停留在该循环中。这种方法可能很棘手,因为在循环之前还必须检查EOF。