社区
数据库
帖子详情
ADO报错重连的问题
fool_leave
2005-01-27 03:41:19
小弟初学ADO,在对数据库操作的时候捕捉错误,但怎么判断这个错误是什么原因造成的呢?比如是重复健还是数据库断开?怎么知道在哪种情况下需要重连数据库呢?
...全文
283
13
打赏
收藏
ADO报错重连的问题
小弟初学ADO,在对数据库操作的时候捕捉错误,但怎么判断这个错误是什么原因造成的呢?比如是重复健还是数据库断开?怎么知道在哪种情况下需要重连数据库呢?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
andyxuyong
2005-01-29
打赏
举报
回复
我是通过调用存储过程,然后返回文件,如果返回文件是ORACLE的一些错,或者是我程式连接的报错就会通过语句重连,当然执行SQL是一样的办法!不知道对你有没有帮助哦!
如:
ReExecute:
if (mtCallProc.Lock() == 0)
{
delete[]pFileInfo;
CDB::LogEvents(sAppName,EVENTLOG_ERROR_TYPE,"\nCan not lock proc!");
return -1;
}
sErr = db->CallProcedure(proc,&rs);
//connect halt
if (sErr!="OK")
{
CDB::LogEvents(sAppName,EVENTLOG_ERROR_TYPE,"\n"+sErr);
if ((sErr.Find("ORA-12571") != -1) || (sErr.Find("ORA-03114") != -1) || (sErr.Find("DB Connection Is Invalid") != -1))
{
ReConnect:
strcpy(cTem,"");
if (db->ConnectDB(cTem,sizeof(cTem))<0)
{
iReConnectTimes++;
if (iReConnectTimes < 4)
{
goto ReConnect;
}
}
else
{
mtCallProc.Unlock();
goto ReExecute;
}
}
}
mtCallProc.Unlock();
jayfunk
2005-01-28
打赏
举报
回复
try
{}
catch(_com_error e)
{
e.discription;
}
快乐鹦鹉
2005-01-28
打赏
举报
回复
我是通过GetDescription判断的
fool_leave
2005-01-28
打赏
举报
回复
ZHENG017说的也有道理。各位一般是怎么判断的?
ZHENG017
2005-01-28
打赏
举报
回复
在catch()后通过执行一条永远正确的sql语句select getdate() as date再判断是否是错,如果出错则证明需要重新连接数据库.
_ConnectionPtr中有个error集合,可以通过error的GetDescription获取错误信息.
chtfyy
2005-01-28
打赏
举报
回复
使用下面的语句,绝对好用!
catch
{
AfxMessageBox(e.Description());
}
快乐鹦鹉
2005-01-28
打赏
举报
回复
回复人: fool_leave() ( ) 信誉:100 2005-01-27 20:39:00 得分: 0
捕获到了错误,但是具体哪些错误需要重连呢?我只知道拔网线和关数据库,其他还有什么情况呢?
e.Error()等于什么时重连?呜呜~~
这个也正是我头疼的问题。我把数据库关了,得到的错误是数据库未定义的错误号,我也不知道如何检查数据库已经断了。关于这个问题,我发过帖子,也未能得到答案。
关注中。。。。。。
fool_leave
2005-01-28
打赏
举报
回复
不明白,你们得到了错误说明然后怎么办?难道用对话框报出来,然后看一下再手动重连吗?
我在想程序要想自动判断是不是要重连,就必须要知道需要重联的错误都有哪些。有没有比较全的错误说明。
legendhui
2005-01-27
打赏
举报
回复
try
catch
fool_leave
2005-01-27
打赏
举报
回复
捕获到了错误,但是具体哪些错误需要重连呢?我只知道拔网线和关数据库,其他还有什么情况呢?
e.Error()等于什么时重连?呜呜~~
oyljerry
2005-01-27
打赏
举报
回复
用try catch来捕获错误
gdy119
2005-01-27
打赏
举报
回复
try{...}
catch(...)
{
CString message;
DWORD ErrorCode = GetLastError() ;
char buff[128];
::FormatMessage (FORMAT_MESSAGE_FROM_SYSTEM,(void*)FORMAT_MESSAGE_FROM_STRING,ErrorCode,0,buff,128,0);
message.Format("执行文件:%s错误,发生在:%d 行,错误描述为:%s",__FILE__,__LINE__,buff);
MessageBox((LPCTSTR)message,"Error",MB_ICONERROR | MB_OK);
}
快乐鹦鹉
2005-01-27
打赏
举报
回复
问的好,try ... catch(_com_error e)
如果有异常,那么
_bstr_t bstrSource(e.Source());
_bstr_t bstrDescription(e.Description());
TRACE("Error\n");
TRACE("Code = %08lx\n", e.Error());
TRACE("Code meaning = %s\n", e.ErrorMessage());
TRACE("Source = %s\n", (LPCSTR) bstrSource);
TRACE("Description = %s\n", (LPCSTR) bstrDescription);
就可以看到错误原因了。
ADO
.NET –连接数据库
ADO
.NET –连接数据库
ADO
.NET从数据库中检索全部数据并将这些数据缓存到客户端计算机上,仅在需要从数据库中检索数据时才建立连接,这种结构通常称为断开式数据结构。
ADO
助手V1.20---一个获取
ADO
连接字符串,测试SQL命令的辅助软件
-修复有时候用DataGrid显示
报错
“The rowset is not bookmarkable.” +增加根据SQL生产MFC数据库类的功能 +增加导入和导出记录集的功能 +增加对多记录集的支持功能 +增加常用的
ADO
连接字符串的下拉选择 2012-09...
winform控件与
ADO
.NET
ADO
.NET的名称起源于
ADO
(ActiveX Data Objects),是一个COM组件库,用于在以往的Microsoft技术中访问数据。之所以使用
ADO
.NET名称,是因为Microsoft希望表明,这是在NET编程环境中优先使用的数据访问接口。
C++封装
ADO
数据库连接,附上DLL源码和测试程序
//解决导出动态库
报错
问题
! #pragma warning(disable:4146) #import "C:\Program Files\Common Files\System\
ADO
\ms
ado
15.dll" named_guids rename("EOF","
ado
EOF"), rename("BOF","
ado
BOF") #pragma warning...
易飞三大
报错
排查详解
易飞ERP系统三大
报错
: 一、系统控制员连接失败 二、报表数据库连接失败 三、LeaderWorkCenter
ADO
连接失败 检查步骤与排查详解。
数据库
4,011
社区成员
39,820
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章