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

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

#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF", "adoEof")
#include<iostream>
#include <stdio.h>
using namespace std;

int main()
{CoInitialize(NULL);  

	 _ConnectionPtr m_pConnection;  //连接对象指针     
	 _RecordsetPtr  m_pRecordset;     //记录集对象指针    
	   
		   try       
		   {                m_pConnection.CreateInstance("ADODB.Connection");   
		   //创建连接对象实例 
		   _bstr_t strConnect="Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=yu;   Data  Source=127.0.0.1";         
		   //连接字符串,这里Query是数据库名,127.0.0.1代表本地主机  
		   m_pConnection->Open(strConnect,"sa","123",adModeUnknown);
		   //打开数据库     
		   }        
		   catch (_com_error e)
			   //捕捉错误
		   {    printf("Error:\n");
   printf("Code = %08lx\n", e.Error());
   printf("Code meaning = %s\n", (char*) e.ErrorMessage());
   printf("Source = %s\n", (char*) e.Source());
   printf("Description = %s\n", (char*) e.Description());
		   }  
			   
		  CoUninitialize();  

}


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值