如何在ADO中跳过失败的行

How to skip the failed row in ADO?

本文关键字:失败 ADO      更新时间:2023-10-16

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

我定义了记录集打击:

_RecordsetPtr m_pRecordset;

打开表的记录集后,我尝试启动一个循环:

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

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

感谢

由于MoveNext将抛出异常,您可以从将该调用嵌入try/catch块开始。当您捕捉到异常时,您希望忽略该记录并继续下一个记录。这可以通过几种方式来处理。

一种方法是有一个标志来指示你是否有一个有效的行,然后在做所有"做一些任务"之前检查它。

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