如何跳过ADO中失败的行?

时间:2018-08-04 03:27:03

标签: c++ sql-server visual-c++ ado

我正在使用ADO访问SQL Server数据库。

我定义记录集打击:

_RecordsetPtr m_pRecordset;

打开表的记录集后,我尝试开始循环:

while (!m_pRecordset->ADOEOF)
{
    …(do some tasks) …
    m_pRecordset->MoveNext();
}

但是,在第44行中,调用m_pRecordset-> MoveNext()时,它将引发异常,指示下一行(行45)中的值无效。然后异常将中止整个循环。如何跳过带有无效值的行并继续到无效行之后的行?

谢谢

1 个答案:

答案 0 :(得分:0)

由于MoveNext会引发异常,因此您可以从将该调用嵌入try / catch块开始。捕获异常时,您想忽略该记录并继续进行下一个记录。可以通过几种方式处理。

一种方法是使用一个标志来指示您是否具有有效的行,然后在执行所有“执行某些任务”任务之前进行检查。

另一种方法是将try / catch块放入一个循环中,如果成功读取一行,则中断该循环,如果失败,则停留在该循环中。这种方法可能很棘手,因为在循环之前还必须检查EOF。