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

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

	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初始化失败");	 
	}
}



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值