odbc连接数据库错误处理

yule253456724 2012-04-13 02:55:57
我想处理连接数据库失败,但是程序不走我写的,而是跳到系统的提示。怎么能这样执行呢


CDatabase m_db;
if(m_db.IsOpen())
{
AfxMessageBox(_T("数据库已经连接"));
return;
}
CString str;
str.Format(_T("DSN=abcd;UID=amp;PWD=amp"));
if (!m_db.OpenEx(str,CDatabase::noOdbcDialog))
{
AfxMessageBox(_T("数据库连接失败"));//连接不上也不打印 ,我想打印这条
}
AfxMessageBox(_T("数据库连接成功"));
m_db.Close();

...全文
212 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
yule253456724 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 的回复:]
用try和catch来抓错误,象你这种情况,加上try和catch后,就会跳到catch里的语句,这样你就可以加上你想要的提示
[/Quote]
哦 懂了
就是把 try 和 catch 当作 if eles 用吧 这样说不是很对 但是比较形象
hdg3707 2012-04-16
  • 打赏
  • 举报
回复
用try和catch来抓错误,象你这种情况,加上try和catch后,就会跳到catch里的语句,这样你就可以加上你想要的提示
yule253456724 2012-04-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]
应该是异常
你用try-catch抓一下
[/Quote]
情况是这样的 我就是想 连接数据库出错的时候 给自己一个通知 比如是邮件之类的 但是每次出错都是弹出异常提示框 而不是走到我写的通知那里 我想问一下怎么处理?
向立天 2012-04-13
  • 打赏
  • 举报
回复
应该是异常
你用try-catch抓一下
yule253456724 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
连接字符串 "DSN=abcd;UID=amp;PWD=amp" 是不是 if() 那处的异常?
[/Quote]
嗯 是
adobase 2012-04-13
  • 打赏
  • 举报
回复
连接字符串 "DSN=abcd;UID=amp;PWD=amp" 是不是 if() 那处的异常?
yule253456724 2012-04-13
  • 打赏
  • 举报
回复
没有人来了啊
yule253456724 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]
是不是在m_db.IsOpen()就没出来,跟一下代码看看
[/Quote]
这个是判断当前是否连接的 ,这条运行正常
程序运行顺序
判断if (!m_db.OpenEx(str,CDatabase::noOdbcDialog))
时 跳转到wincore.cpp

CATCH_ALL(e)
{
lResult = AfxProcessWndProcException(e, &pThreadState->m_lastSentMsg);
TRACE(traceAppMsg, 0, "Warning: Uncaught exception in WindowProc (returning %ld).\n",lResult);
DELETE_EXCEPTION(e);
}

之后弹出 无效的登录名或者密码
驱动程序的SQLSetConnectAttr失败
mague 2012-04-13
  • 打赏
  • 举报
回复
是不是在m_db.IsOpen()就没出来,跟一下代码看看
yule253456724 2012-04-13
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
跟下代码看他怎么走 这看起来也没什么问题吧 ..
[/Quote]
我就想测试连接失败时候处理一下 但是 我手动填写错误的UID或者是PWD就跳转到系统自己中断了 弹出中断信息
adobase 2012-04-13
  • 打赏
  • 举报
回复
跟下代码看他怎么走 这看起来也没什么问题吧 ..

4,011

社区成员

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

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