VC如何判断Access数据库里的某个表是否存在?(除了:改Access权限读“msysobjects”表的方法)?

WW 2008-07-21 09:46:30
VC如何判断Access数据库里的某个表是否存在?(除了:改Access权限读“msysobjects”表的方法)?
...全文
163 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
scq2099yt 2008-07-21
  • 打赏
  • 举报
回复
试着打开表,捕获错误。
cacar2008 2008-07-21
  • 打赏
  • 举报
回复
CDaoDatabase daoDatabase
str = "select * from xxx";//xxx为待查表名
try
{
daoDatabase.Execute(str,);
}
catch (Exception e)
{
if (e is CDaoException)
do something
else
goto OtherCord;
}
内存泄漏 2008-07-21
  • 打赏
  • 举报
回复
ADO实现代码如下:
STDMETHODIMP CADOTier::get_IsExistTable(BSTR bsTable, long lType, VARIANT_BOOL *pVal)
{
  ADODB::_RecordsetPtr pRstSchema = NULL;
  pRstSchema = m_connection->OpenSchema(ADODB::adSchemaTables);
  _bstr_t bsTableName(bsTable);
  _bstr_t table_name("");
  _bstr_t table_type("");
  char *pTemp1=NULL,*pTemp2=NULL;
  pTemp1 = _com_util::ConvertBSTRToString(bsTableName);
  pTemp1 = strlwr(pTemp1);
  VARIANT_BOOL b=FALSE;
  while(!(pRstSchema->adoEOF))
  {
    table_name = pRstSchema->Fields->
    GetItem("TABLE_NAME")->Value;
    pTemp2 = _com_util::ConvertBSTRToString(table_name);
    pTemp2 = strlwr(pTemp2);
    table_type = pRstSchema->Fields->
    GetItem("TABLE_TYPE")->Value;
    if (lType == 1) //view type
    {
      if (table_type == _bstr_t("VIEW"))
      {
        if (strcmp(pTemp1,pTemp2)==0)
        b = TRUE;
      }
    }
    if (lType == 0) //table type
    {
      if (table_type == _bstr_t("TABLE"))
      {
        if (strcmp(pTemp1,pTemp2)==0)
        b = TRUE;
      }
    }
    pRstSchema->MoveNext();
  }
 
  // Clean up objects before exit.
  if (pRstSchema)
  if (pRstSchema->State == ADODB::adStateOpen)
  pRstSchema->Close();
  *pVal = b;
  return S_OK;
}
WW 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zaodt 的回复:]
没用过DAO , ADO 是可以的。
[/Quote]

请教如何用ADO实现?
zaodt 2008-07-21
  • 打赏
  • 举报
回复
没用过DAO , ADO 是可以的。
WW 2008-07-21
  • 打赏
  • 举报
回复
	CDaoDatabase daoDatabase
str = "select * from xxx";//xxx为待查表名
try
{
daoDatabase.Execute(str,);
}
catch (CDaoException e)
{
goto OtherCord;
}


这样,它总是报错,如何不弹出报错,又能执行“goto OtherCord;”???
WW 2008-07-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zaodt 的回复:]

试着打开表,捕获错误。
[/Quote]

用try 捕获不到。程序自动报错并停止
zaodt 2008-07-21
  • 打赏
  • 举报
回复

试着打开表,捕获错误。

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧