for (int i=0;i<6;i++)
    {
        sscanf_s(itemStr.Mid(2*i,2),"%x",&UserID[i]);
    }
try
{
sql.Format("select count(*) as BuyTotal from BuyInformation where 用户编号 = '%s' AND 操作类型 = '用户购气'",itemStr);
pCommand->CommandText = (_bstr_t)sql;
pRecordset=pCommand->Execute(NULL,NULL,adCmdText);
}
catch(_com_error e)
{
MessageBox("数据库错误:\r\n" + e.Description(),"系统提示",MB_OK|MB_ICONERROR);
return;
} 代码如上,当调试运行到pCommand->CommandText = (_bstr_t)sql时,会在"  HRESULT _hr = put_CommandText(pbstr);"出现异常!
当我将for循环里面的东西放到catch后面的话,就不会出现上述问题,很是奇怪!

解决方案 »

  1.   

    出现的问题提示是
    "0x00470e23 处未处理的异常: 0xC0000005: 读取位置 0x00000050 时发生访问冲突"
      

  2.   

    应该不是这句的错误,估计是别的地方,比如for循环,指针为空引起的。
    ADO错误的话catch(_com_error e)捕获异常都可以获取。
      

  3.   

    捕获到的异常为空!UCHAR UserID[6] UserID的定义也是6个长度的数组!
      

  4.   

    pCommand没有调用createInstance或者调用不成功
      

  5.   

    这些都不是,貌似就是由于sscanf_s(itemStr.Mid(2*i,2),"%x",&UserID[i])的问题,我把for循环去掉就可以了!