如何解决C ++中的数据库ADO连接E_OUTOFMEMORY
连接到数据库时,我的程序有时会遇到异常(_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 举报,一经查实,本站将立刻删除。