问题描述
连接到数据库时,我的程序有时会遇到异常(_com_error - E_OUTOFMEMORY)
。
enter image description here
这是在我关闭数据库并重新打开数据库之后发生的,我每24小时执行一次。
当我的程序以全天候24/24运行时,需要进行适度的数据库访问,所以这是不可接受的。
我写了一个小的控制台程序来测试没有记录集访问权限的数据库的打开和关闭:
#include <Windows.h>
#include <iostream>
#import "c:\Program Files\Common Files\System\ADO\msado15.dll" \
no_namespace rename("EOF","EndOfFile")
int main()
{
_ConnectionPtr m_pConnectionPtr=0;
HRESULT hr = CoInitializeEx(NULL,COINIT_MULTITHREADED);
bstr_t strCnn("Provider=MSDASQL;DSN=Receptuur;User ID=sa;");
m_pConnectionPtr.CreateInstance(__uuidof(Connection));
int cnt = 0;
while (1)
{
std::cout << cnt++ << std::endl;
// close connection
if (m_pConnectionPtr && (m_pConnectionPtr->State == adStateOpen))
m_pConnectionPtr->Close();
// reopen connection
m_pConnectionPtr->Open(strCnn,"",NULL);
Sleep(5);
}
CoUninitialize();
}
我故意没有放置try-catch来使应用程序崩溃。
经过数千次循环后,我现在得到了未处理的异常E_FAIL in the Connection15::Open
。
screenshot image
我想念什么吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)