您的位置:首页 > 数据库

ADO方式连接数据库,出现"无效指针"错误,错误代码为:0x80004003

2012-07-23 18:20 696 查看


之前的捕获代码也贴在这里

catch(_com_error e)  //捕捉异常
{
CString strErro;
strErro.Format("连接数据库失败!代码:%08X 信息:%s 描述:%s\r\n", e.Error(),(wchar_t*)e.ErrorMessage(),(wchar_t*)e.Description());
AfxMessageBox(strErro);
return FALSE;
}
catch(...)
{
AfxMessageBox("Unkown Error...");
}
+初始化后成功~
::CoInitialize(NULL);
OnMenuitemRelogin() ;  //调用登陆框,首先显示登陆框
::CoUninitialize();

http://hi.baidu.com/isafesoft/item/97c9b4c19183e6b30d0a7be8

或者参照上述地方的

后来查资料知道,ADO是com组件,它必须先进行初始才能够正常使用,初始方法是在代码前加入一行:
CoInitialize(NULL);
当然,最好在代码结束的地方加一行
CoUninitialize();
那么,程序就能够正常运行了.
总结一下,在MFC中可以用AfxOleInit();但在非MFC环境下一定要用CoInitialize().有部分高深者习惯将CoInitialize()放在工程的APP类的InitialInstance()中,所以在直接调用ADO联机的地方看不到它,但千万不要以为没有它也能调用ADO进行数据访问哦!

后来仔细看了下书上实例,在App函数中添加了OLE环境初始化代码
CMy10DBMSApp::CMy10DBMSApp()
{
// TODO: add construction code here,
// Place all significant initialization in InitInstance
//初始化OLE环境
if(!AfxOleInit())
{
AfxMessageBox("OLE初始化失败");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  数据库 null
相关文章推荐