CDaoRecordset 如果字段存在于 MFC C++

CDaoRecordset If a field Exists in MFC C++

如何使用 VC++ DaoRecordSet 检查 Access 数据库 Table 中是否已存在给定字段名称。我尝试了 Google 和 MSDN 文档,但可以找到任何有用的东西。

我尝试使用以下代码:

BOOL IsFieldExixts(CDaoRecordset *rs, CString Fieldname)
{
   COleVariant OV;
   try
   {
      rs->GetFieldValue(FieldName,OV);
   }
   catch(CDaoException e)
   {
      return FALSE;
   }

   return TRUE
}

但它不会在未找到时引发异常,而是显示一个消息框,说明找不到项目。

我需要一个 C++ 解决方案,我在 Google 上只能找到 vb 个解决方案

GetFieldValue 不显示任何消息框。您的 catch 块不正确,您需要

catch(CDaoException *e) {
    e->Delete();
    return FALSE;
}

所以在你的程序中,你的代码没有处理异常。因此,在 MFC 顶级函数中,默认的异常处理程序被调用,并且显示一个消息框。

顺便说一句,要检查记录集中是否存在条目,您可以调用 CDaoRecordset::IsEOF.

您可以调用 ISEOF() 方法的记录集。

while(rs.IsEOF())
        {
            rs.Delete();
            rs.MovePrev();
        }
        rs.Close();//every time you should close the recordset connection