Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何跳过ADO中失败的行?_C++_Sql Server_Visual C++_Ado - Fatal编程技术网

C++ 如何跳过ADO中失败的行?

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行)中的值无效。然后异常将中止整个循

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

我定义记录集:

_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