C++ 如何跳过ADO中失败的行?
我正在使用ADO访问SQL Server数据库 我定义记录集:C++ 如何跳过ADO中失败的行?,c++,sql-server,visual-c++,ado,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行)中的值无效。然后异常将中止整个循
_RecordsetPtr m_pRecordset;
打开表的记录集后,我尝试启动一个循环:
while (!m_pRecordset->ADOEOF)
{
…(do some tasks) …
m_pRecordset->MoveNext();
}
但是,在第44行中,当调用m_pRecordset->MoveNext()时,它将引发一个异常,指示下一行(第45行)中的值无效。然后异常将中止整个循环。如何跳过具有无效值的行并在无效行之后继续该行
谢谢因为
MoveNext
将引发异常,您可以首先将该调用嵌入try
/catch
块中。当捕捉到异常时,您希望忽略该记录并继续下一个记录。这可以通过几种方式处理
一种方法是使用一个标志来指示您是否有有效的行,然后在执行所有“DoSomeTasks”操作之前检查该行
另一种方法是将try
/catch
块放入一个循环中,如果您成功读取一行,该循环将中断,如果您失败,则保持循环。这种方法可能很棘手,因为在循环之前还必须检查EOF