⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_44362.htm

📁 一些关于vc的问答
💻 HTM
字号:
<p>
序号:44362 发表者:金枪鱼 发表日期:2003-06-19 09:06:59
<br>主题:打开数据库时的提示问题
<br>内容:打开数据库时,我不像捕捉各种复杂的异常,仅仅弹出一个提示框说明数据库没有打开即可。<BR>[ODBC、Win2KServer、SQLServer2K]<BR>我用下来代码:<BR>if(!pDb-&gt;IsOpen())<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDb-&gt;OpenEx(_T("DSN=")+DataSourceName+_T(";UID=")+DbLogName+_T(";PWD=")+DbPwd,CDatabase::noOdbcDialog);<BR>if(!pDb-&gt;IsOpen())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;this-&gt;MessageBox("数据库连接失败!","错误",MB_OK | MB_ICONSTOP);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>一般操作完全正常。<BR><BR>但是当我把SQL服务关闭,或者使用一个错误的登录密码登录。结果却不是弹出我设定的提示消息框,而是"用户sa登录失败!"或者“通讯链接失败!”。我设置的提示框根本就没有弹出来!<BR><BR>请高手指点为什么,难道必须使用异常捕捉吗?
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:萧七 回复日期:2003-06-19 09:47:04
<br>内容:出 错 的 地 方 在 : pDb-&gt;OpenEx()处 , 下 边 的 if语 句里 的 MessageBox根 本&nbsp;&nbsp;都 不 会 执 行 的 。 <BR>用:<BR>try<BR>{<BR>//OPEN DATABASE<BR>}<BR>catch(...)<BR>{<BR>&nbsp;&nbsp; //ERROR MESSAGE: <BR>&nbsp;&nbsp; MessageBox();<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:金枪鱼 回复日期:2003-06-19 13:44:53
<br>内容:&nbsp;&nbsp;&nbsp;&nbsp;//检查数据库打开情况,如果没有打开就尝试打开<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(!pDb-&gt;IsOpen())<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;try<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pDb-&gt;OpenEx(_T("DSN=")+DataSourceName+_T(";UID=")+DbLogName+_T(";PWD=")+DbPwd,CDatabase::noOdbcDialog);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;catch(CDBException * e)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{//如果数据库还没有打开,弹出警示对话框<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;CString strTip=_T("数据库连接失败!\n\n");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;strTip+=_T("因为:\n\n")+e-&gt;m_strError;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MessageBox(strTip,"错误",MB_OK | MB_ICONSTOP);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e-&gt;Delete();<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return -1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>这样好像对了,但还要不要throw,还有END_CATCH?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:萧七 回复日期:2003-06-19 14:11:02
<br>内容:客 户 程 序 不 用 THROW了 吧 , 你 只 捕 获 异 常&nbsp;&nbsp;就 行 了 
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -