代码:
try
{
    strSQL="......
    pConnection->Execute((_bstr_t)strSQL,NULL,adCmdText);
}
catch(_com_error e)
{
    TRACE("%u,%s",e.Error(),e.ErrorMessage());
}不论是SQL语句出错,还是记录key值重复,总是得到"2147500037,未指定的错误"这样的结果。我现在主要是想根据catch到的错误,把重复的纪录跳过去,大家帮我看看为什么呀?
我的数据库用的是PSQL运行于Linux下,ADO程序运行于Win2000。

解决方案 »

  1.   

    试试
    e.Description());里的内容更详细一些。e.Error()用
    %x显示好一些
      

  2.   

    改为:
    TRACE("%u,%x,%s",e.Error(),e.ErrorMessage(),e.Description());
    结果:
    "2147500037,177028,??"
      

  3.   

    应该是TRACE("%u,%x,%s",e.Error(),e.ErrorMessage(),(char*)e.Description());
      

  4.   

    还是一样的,因为ErrorCode一直都是2147500037,在错误代码里面没有这个号码,这是问题的关键,大家再帮我看看。
      

  5.   

    ADO返回的ErrorCode一般都是"未指定的错误",e.Description()里面会有比较详细的描述。不过e.Description()是OLEDB驱动程序返回的错误信息,如果你的驱动程序没有返回,那么e.Description()就可能是空的。
    此外,e.Description()的类型是_bstr_t,需要用重载的操作符(char*)来返回通常使用的字符串。
      

  6.   

    搞定了,多谢几位!
    但为什么ErrorCode都是“未指定的错误”?