ADO _Recordset 操作错误

littleeagle007 2006-04-19 10:24:03
在执行m_pRecordset->Open(bstrSQL,
//_variant_t((IDispatch *)m_pConnection,true),
m_pConnection.GetInterfacePtr(),
adOpenStatic,
adLockOptimistic,
adCmdText);
应用程序,提示内存出错。
跟踪后的结果是:
Unhandled exception in HnRadio.exe (MSVCRT.DLL):0xc00000fd :stack overflow

请问各位大虾,是怎么回事??
...全文
162 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
littleeagle007 2006-04-28
  • 打赏
  • 举报
回复
写一个窗口函数,发送一个自定义 消息过去,在这个函数里调用关于pRecordset的处理
T97102003 2006-04-25
  • 打赏
  • 举报
回复
:将 有关m_pRecordset 操作放的窗口函数里。就没有出现这个问题
那你现在操作放在哪里?

如果是放在线程里,线程开始处要初始化com库:CoInitialize();
zwzzwz 2006-04-25
  • 打赏
  • 举报
回复
堆栈不够了,尽量不要要数组,将数组改为堆空间
如:
原先:int a[1000];
改为:
int *a=new int[1000];

注意用后删掉,释放存储
littleeagle007 2006-04-24
  • 打赏
  • 举报
回复
violin712(violin712)

所的的问题,我都做好了。但是不是这个问题,我将 有关m_pRecordset 操作放的窗口函数里。就没有出现这个问题,有人跟我解释说 ADO 是COM 的一部分。所以放到窗口函数里处理更安全
flowlight 2006-04-24
  • 打赏
  • 举报
回复
你这是堆栈溢出错误

我以前对多个类型的对象聚合成统一操作的时候,曾经将某个成员变量的同名函数忘写了成员变量名,结果出现了无限递归->堆栈溢出

堆栈溢出通常是无限分配临时变量造成的(可能是你失误或者无意)

你可以使用单步跟踪+分块搜索(整体到局部的分块调试)的方式找到问题所在.
可能会是你的代码问题,也可能会是你对数据库接口的工作过程步了解,导致了数据库接口BUG的爆发
littleeagle007 2006-04-19
  • 打赏
  • 举报
回复
怎么设可否给点提示??
violin712 2006-04-19
  • 打赏
  • 举报
回复
还有两个要确认(1)同一个pRecordset对象不能连续Open两次,第二次Open之前要确认先Close,然后再Open (2)Open之前m_pRecordset.CreateInstance(__uuidof(Recordset));不要忘记,呵呵,这不太可能的。
violin712 2006-04-19
  • 打赏
  • 举报
回复
adOpenStatic换成adOpenKeyset试试,不行的话再试试下面代码去捕捉异常
try {
m_pRecordset->Open(bstrSQL,
//_variant_t((IDispatch *)m_pConnection,true),
m_pConnection.GetInterfacePtr(),
adOpenStatic,
adLockOptimistic,
adCmdText);
} catch (_com_error err) {
AfxMessageBox((LPCTSTR)err.Description());
}
syy64 2006-04-19
  • 打赏
  • 举报
回复
在连接选项里设置栈大小。

4,012

社区成员

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

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