VC 连接SqlSever 如何或许数据库报错信息

gohands 2006-08-28 11:49:40
用的是ado ,com 连接的数据库
现在想插入纪录的时候报出sqlsever的错误
try
{
...
}
catch(_com_error e)
{
e.ErrorMessge();
e.WCode();
}

这样做不管sql文不对,还是数据重复 得出的e内容都是一样的
怎么区分
谢谢
...全文
176 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
raymonzhao 2006-08-28
  • 打赏
  • 举报
回复
e里有一个错误号的,你跟踪一下可以看出是什么错,主键重复,溢出,或是字段类型不符等都可以判断出来.我原来做过,不过不记得这个错误号是多少了.你查查相关的资料.这样可以对报错进行自己更具体的处理.
handsomerun 2006-08-28
  • 打赏
  • 举报
回复
catch(_com_error e)
{
_bstr_t bstrSource(e.Source());

_bstr_t bstrDescription(e.Description());

TRACE(_T("\n Source : %s \n Description : %s \n"),(LPCSTR)bstrSource,(LPCSTR)bstrDescription);


}

gohands 2006-08-28
  • 打赏
  • 举报
回复
头想把sql工具执行的报错结果拿出来
郁闷!
handsomerun 2006-08-28
  • 打赏
  • 举报
回复
其实如果是数据重复的话 ,可以用别的方法判断的,你可以先查询一下数据库,看是否有重复
gohands 2006-08-28
  • 打赏
  • 举报
回复
UP

------------------------------------------------------

e.Error() 的值一直都是 -2147217900
郁闷
现在暂时根据 e.Description()里面查找关键字来判断的!


tanyaliji 2006-08-28
  • 打赏
  • 举报
回复
那你看要执行的查询数据库函数的返回值
lshddd 2006-08-28
  • 打赏
  • 举报
回复
try{
////...............
}
catch (_com_error e)
{
CString strComError;
strComError.Format("错误编号: %08lx\n错误信息: %s\n错误源: %s\n错误描述: %s",
e.Error(), // 错误编号
e.ErrorMessage(), // 错误信息
(LPCSTR) e.Source(), // 错误源
(LPCSTR) e.Description()); // 错误描述

::MessageBox(NULL,strComError,"错误",MB_ICONEXCLAMATION);
}

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧