MSDN 中 ADO Reference 有 VB/VC 的详细例子。

解决方案 »

  1.   

    我觉得更新数据库的时候用CDatabase好些
    可以CommitTrans,也可以Rollback
      

  2.   

    CDatabase太古老了,通过OBBC连接。现在已被微软放弃。现在应该用ADO.//示例
    #import <msado15.dll> rename( "EOF", "adoEOF" )
    #define ADO_PROVIDER_JET      _TEXT("Microsoft.Jet.OLEDB.4.0"); //建立连接对象
     ADODB::_ConnectionPtr  adoConn;
     ADODB::_RecordsetPtr   adoRs;
     int          nRet = ERROR_SUCCESS;
     BOOL         fConnOpen = FALSE; adoConn.CreateInstance( __uuidof(ADODB::Connection) );
     adoConn->Provider = ADO_PROVIDER_JET;
     _tcscpy(lpszDataSrc, _T("Data Source=")); //lpszDataSrc是局部字符数组
     _tcscat(lpszDataSrc, m_lpszFile);         //m_lpszFile是要打开的Jet数据库
     _tcscat(lpszDataSrc, _T(";"));
     adoConn->ConnectionString = lpszDataSrc;
     adoConn->Open( bstrEmpty, bstrEmpty, bstrEmpty, -1 );
     fConnOpen = TRUE;//执行命令
     swprintf(lpszDataSrc,_T("Delete From Example Where No=%d"),nNo);
     adoConn->Execute(lpszDataSrc,NULL,ADODB::adCmdText);//查询数据
     swprintf(lpszDataSrc,_T("Select Exclusion From Example Where No=%d"),nTermNo);
     adoRs.CreateInstance(__uuidof(ADODB::Recordset));
     adoRs->Open(lpszDataSrc,
                _variant_t((IDispatch *)adoConn,true),
                ADODB::adOpenStatic,
                ADODB::adLockOptimistic,
                ADODB::adCmdText);
     while(adoRs->adoEOF == VARIANT_FALSE)
    {
        _bstr_t pTmpStr;
        pTmpStr=adoRs->Fields->GetItem(_variant_t((short)0))->Value;
        adoRs->MoveNext();
    }
    //关闭
    if(adoRs)
        adoRs->Close();
    if(adoRs)
        adoRs->Close();另外,要注意失败检测
    try{
    }catch(...)
    {
    }
    有关参数可见ADO15.CHM
      

  3.   

    _ConnectionPtr和_CommandPtr对象的Execute函数中VARIANT *RecordsAffected参数应如何使用?_ParameterPtr如何使用?多个参数怎么置?