在VC环境下我用ADO访问Access,当我增加一条记录时,因为数据类型不对,update时数据没有加入数据库,但是也没有提示错误,所以我想知道,如何判断记录更新了没有,错误信息是什么?请帮忙!

解决方案 »

  1.   

    try
    {
    //do your sql 
    }
    catch(...)
    {
    long errorcount=myapp->m_pConnection->GetErrors ()->GetCount ();
    if (errorcount<1)
    return 1;
    _bstr_t add;
    CString errormsg;
    for (short i=0;i<errorcount;i++)
    {
    add=myapp->m_pConnection->GetErrors ()->GetItem (COleVariant((short)i))->GetDescription ();
    errormsg.Insert (0,(char*)add);
    errormsg+="\r";
    }
    #ifdef _DEBUG
    AfxMessageBox(errormsg);
    #endif
    myapp->m_pConnection ->GetErrors ()->Clear();
    }
      

  2.   

    CAdoRecordset* pAdoset;
    pAdoset = m_pOpDatabase->GetDataRest("REP_MAIN");
    strSQL = "SELECT * FROM REP_MAIN";
    pAdoset = m_pOpDatabase->GetDataRest("REP_MAIN");
    m_pOpDatabase->Connect(pAdoset,strSQL);
    pAdoset->AddNew();
    pAdoset->lSetFieldValue("SystemKey",2);
    pAdoset->Update();
    pAdoset->Close();
      

  3.   

    try
            {
    CAdoRecordset* pAdoset;
    pAdoset = m_pOpDatabase->GetDataRest("REP_MAIN");
    strSQL = "SELECT * FROM REP_MAIN";
    pAdoset = m_pOpDatabase->GetDataRest("REP_MAIN");
    m_pOpDatabase->Connect(pAdoset,strSQL);
    pAdoset->AddNew();
    pAdoset->lSetFieldValue("SystemKey",2);
    pAdoset->Update();
    pAdoset->Close();
           }
            catch(_com_error e)///捕捉异常
           {
    CString errormessage;
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description());
    errormessage.Format("代码:%08lx\n含义:%s\n描述:%s\n",e.Error(),e.ErrorMessage(),
    (LPCSTR)bstrDescription);
    AfxMessageBox(errormessage);///显示错误信息

    }还可以在后面加上 ZHENG017(风中王子)的那一段catch