本例是通过Insert的 New ATL Object中的 OLE DB利用 ODBC Driver连接的 Sybase数据库表 采用COMMAND方式CString str="Insert into table1(a,b) value (1,2);"
table1.open(m_session,str,&propset)
上述语句可行吗?
如不行,正确的方法应是?

解决方案 »

  1.   

    应该这样来用
    lpctszCmdText = "Insert into table1(a,b) value (1,2);" _CommandPtr pCommand;
    _variant_t varNull;
    varNull.vt=VT_ERROR;
    varNull.scode=DISP_E_PARAMNOTFOUND;
    HRESULT hr;
    try{
    hr=pCommand.CreateInstance(__uuidof(Command));
    if(SUCCEEDED(hr))
    {
    gl_pConnection->BeginTrans();

    pCommand->ActiveConnection=gl_pConnection;
    pCommand->CommandType=adCmdText;
    pCommand->CommandText=_bstr_t(lpctszCmdText);
    pCommand->Execute(&varNull,&varNull,adCmdUnknown);
    gl_pConnection->CommitTrans();
    }
    }
    catch(_com_error &e)
    {
    _bstr_t bstrSource(e.Source());
    _bstr_t bstrDescription(e.Description()); CString csError;
    csError.Format("编号:%08x\n编号含义:%s\n源代码:%s\n描述:%s\n",
               e.Error(),e.ErrorMessage(),(LPCTSTR)bstrSource,(LPCTSTR)bstrDescription);
    MessageBox(NULL,(LPCTSTR)csError,"[ExecuteScriptCommnadText]由#import引进的对象出现异常",MB_OK|MB_ICONSTOP);
    gl_pConnection->RollbackTrans();//回滚事务
    }
    catch(...)
    {
    MessageBox(NULL,"不可捕捉的异常","[ExecuteScriptCommnadText]由#import引进的对象出现异常",MB_OK|MB_ICONSTOP);
    gl_pConnection->RollbackTrans();//回滚事务
    }