怎样让ADO打印出详细的出错信息?

noneone 2004-10-14 05:24:31
我使用以下语句来处理ADO操作:
try{
...
}
catch(_com_error *e)
{
AfxMessageBox(e->ErrorMessage());
}
但出错(数据被锁定、表不存在、数据库无法连接)时,直接弹出一个未处理的异常,点确定后就退出了,感觉好像异常没有捕捉到,怎样让这些情况出现时打印详细的出错信息,把原因打印出来?
...全文
154 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
najzni 2004-10-15
  • 打赏
  • 举报
回复
try{
...
}
catch(_com_error *e)
{
_bstr_t bs = _bstr_t(" Error: ") + _bstr_t(e.Error()) + _bstr_t(" Msg: ")
+ _bstr_t(e.ErrorMessage()) + _bstr_t(" Description: ")
+ _bstr_t(e.Description());
MessageBox(bs,"提示",MB_OK);
}
sony19791015 2004-10-15
  • 打赏
  • 举报
回复
我也不知道该怎么输出错误信息,但我觉得一步一步调试是可以找到错误的
aqbidt 2004-10-15
  • 打赏
  • 举报
回复
原因可能是抛出的不是数据库类异常,
举例来说,比如你对_RecordsetPtr类型的指针,
在你打开数据表失败后把_RecordsetPtr类型的指针赋值NULL,
在另外的函数体中通过此指针操作表也会出异常,
你再检查一下你的程序
bohut 2004-10-15
  • 打赏
  • 举报
回复
http://community.csdn.net/Expert/topic/3289/3289191.xml?temp=.9107172
noneone 2004-10-15
  • 打赏
  • 举报
回复
CDBException也不行,如果我使用的select语句涉及不存在的表,怎样捕捉这个异常?
clack234 2004-10-15
  • 打赏
  • 举报
回复
catch(_com_error &e)试试
catch(CDBException e)试试
noneone 2004-10-15
  • 打赏
  • 举报
回复
不行啊!还是未处理的异常,难道我收到的不是 _com_error 这种类型的异常吗?
noneone 2004-10-14
  • 打赏
  • 举报
回复
不太明白您的意思,是在catch里面调用这个函数吗?
内存泄漏 2004-10-14
  • 打赏
  • 举报
回复
void TRACE_ERR(_ConnectionPtr m_pConn)
{
ErrorsPtr errs;
ErrorPtr err;
errs = m_pConn->Errors;
for(int i = 0; i< errs->Count; i++)
{
err = errs->Item[_variant_t((long)i)];
TRACE("NativeError:%ld\n",err->NativeError);
TRACE("ErrorNumber:%ld\n",err->Number);
TRACE("SQLState:%s\n",(char*)err->SQLState);
TRACE("Source:%s\n",(char*)err->Source);
TRACE("HelpContext:%d\n",err->HelpContext);
TRACE("HelpFile:%s\n",(char*)err->HelpFile);
}
}
<<畅海货运系统>>是用于企业的货运管理,管理企业流程的各项费用,以及员工的基本信息,以及与业务往来公司的基本信息,本软件科学,使用,方便,宗旨为了减轻货运人员过去传统的手工制表,手工录入数据,当数据量大时,容易,查找时,耗费大量时间,降低了工作效率.<<畅海货运系统>>包含了数据字典表,数据录入表,便于使用者灵活运用,字典表:发货信息表,收货信息表,海运信息表,陆运信息表,代理信息表,客户信息表,员工费用表:海运费用,陆运费用,代理费用,其他费用,客户费用,各表的使用方法请参阅操作说明, 好的管理软件能使您的公司,企业,或单位的生产效率,工作效率,管理水平有一个较大的提高,减少您不必要的浪费,使您对您的公司业务经营运转,费用支,员工信息做到心中有数,使您的计划,决策更科学,合理,以适应当今竞争日趋激烈的环境.如果您需要更新的管理软件,请来信,我们将为您量身定做适合您的软件. #k$+操作指南 本软件管理员在操作时,应严格按照操作指南的步骤去做; 1:在进入系统后,先打开信息字典表来添加基本信息,基本信息录入完毕后,关闭窗体,进入费用表中录入费用。 ********为了方便客户录入方便,提高工作效率,成本费用表中一个窗体融合了,海运费用,陆运费用,代理费用,其他费用,客户只需点击鼠标切换录入信息,方便快捷。 2:打开发货信息表 ,,点击添加按钮,文本框将呈现绿色,就可输入数据,输完数据后点击保存,表将接收数据,录入完毕后文本框变为白色,修改数据时,选中要修改的记录,点击修改按钮可修改数据,修改完后,点击保存,数据修改完成,当删除数据时,选中要删除的那条记录,点击删除按钮,系统提示对话框,提示是否删除数据,点击确定后,数据将被删除.当数据输入还没完时,关闭系统,系统提示是否保存,点击取消按钮,数据作废,查找某位员工信息时,可以进行多种查询,可以按员工编号,员工姓名,员工部门进行查询。***信息表数据录入相同*** 4:打开费用表,点击添加按钮,文本框将呈现绿色,就可输入数据,输完数据后点击保存,表将接收数据,录入完毕后文本框变为白色,修改数据时,选中要修改的记录,点击修改按钮可修改数据,修改完后,点击保存,数据修改完成,当删除数据时,选中要删除的那条记录,点击删除按钮,系统提示对话框,提示是否删除数据,点击确定后,数据将被删除.当数据输入还没完时,关闭系统,系统提示是否保存,点击取消按钮,数据作废,查找某位员工费用时,可以进行多种查询,可以按员工编号,员工姓名,员工部门进行查询。 5客户费用表:客户费用表中信息来自于客户信息,发货信息,当录入数据时信息表中没有对应数据,系统提示到信息表中录入数据,为了打印方便。系统提供了打印模板,客户可自己设计模板。功能强大. 报表操作 报表分为月报表,年报表,用户输入月份既显示所打印的该月的所有数据信息,点击打印浏览按钮,可查看,如合适,点击打印按钮,可打印报表. 年报表和月报表用法相同,用户输入所要打印的年份,即打印所有相应年份的数据 #k$+给用户授权 系统使用前必须给用户授权,权限分为管理员和来宾权限两种, 为了公司的安全保密,来宾登录本系统必须经过管理员,否则不能进入,管理员可以对表进行添加,删除,修改操作,来宾进入系统,为安全起见,用户管理表不可用,员工工资表,员工信息表,员工费用表,考勤表的添加,删除,修改按钮不可用,只能浏览数据. ***提示***:第一个登录本系统的用户系统默认为管理员. #k$+基本数据输入 管理员对表输入数据时,费用表中,考勤表中有的字段不能为空,当你不输入数据是,系统会提示,数据不完整,只有输入全部基本数据后系统才会正常使用.表中呈现蓝色的文本框,不需输入。 ***提示***如输入非法字符,系统提示错误. #k$+用户口令修改 打开修改密码窗体,用户名系统会自动得,点击修改按钮,输入原密码,在输入新口令,再在新口令确认框中确认新口令,单击确认按钮既修改口令成功 # k$+数据备份和恢复 由于各种原因,可造成数据库文件破坏,所以每次操作后,都要进行数据备份,以防不测.备份时,系统将提示把数据库备份到何处,由使用者选择路径,单击确定完成备份.恢复数据备份时,系统将提示用户恢复那一个数据库,用户选择路径后,单击确定完成备份恢复.

4,017

社区成员

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

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