Utilice el método Ejecutar de _ConnectionPtr. Si la tabla no existe, se generará una excepción _com_error. Si no hay ningún registro en la tabla, no hay ningún registro en _RecordsetPtr.
//_RecordsetPtr m_pRecordset;
int getTableId(_ConnectionPtr amp; conn, CString table) {
CString strQuery;
strQuery. Format(_T("seleccione 1 de s"), tabla);
pruebe {
m_pRecordset = conn-gt; Execute((_bstr_t)strQuery, NULL, adCmdText);
}
catch(_com_error e) {
return -1; //La tabla no existe
}
if (m_pRecordset-gt;adoBOF) {
m_pRecordset-gt;Close();
return 0; //Sin registro
} else {
m_pRecordset-gt; Close();
return 1; //Hay un registro
}
}
Esta función es un poco vaga, pero es más intuitiva y básicamente puede cumplir con los requisitos funcionales de la función.