下列代码为何无效?
class 有4项:CLASSNAME(主键),NUMBER,HEADERNAME,DEMO
我想对它进行更新。
sql_.Format("update class set NUMBER='%s' where CLASSNAME='%s' ",m_strNumber,stroname);
//sql_.Format("UPDATE CLASS SET HEADERNAME='%s' ,DEMO='%s' WHERE CLASSNAME='%s' ", m_strHeadername,m_strDemo,stroname); _bstr_t sql=sql_;
try
{
m_DBCnt->Execute(sql,NULL,adCmdText);//ADO
}
    catch(_com_error &e)
{
    AfxMessageBox(e.ErrorMessage());
}
显示错误:IDispatch error #3092
但是如果把sql_替换为//后的语句会成功。也就是NUMBER不能更新。我的数据库采用的是ACCESS.

解决方案 »

  1.   

    看一下你的数据库定义,如果number越界或者number为自动生成的字段,就不能赋值
      

  2.   

    这样应该行吧~先确定是的 NUMBER 在表里的数据类型是 字符型.CString strSQL;
    strSQL.Format("update class set NUMBER='%s' where CLASSNAME='%s' ",m_strNumber,stroname);
    _CommandPtr m_pCmd=NULL;
    pCmd.CreateInstance(__uuidof(Command));
    m_pCmd->putref_ActiveConnection(m_pConnection);
    m_pCmd->put_CommandType(adCmdText);
    m_pCmd->CommandText((_bstr_t)(LPCTSTR)strSQL);m_pCmd->Execute(NULL, NULL, NULL);
    m_pCmd.Release();