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
如何使用 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