分享

VS2013环境下MFC通过ADO连接Oracle数据库 四步搞定

 行走在理想边缘 2019-01-21

         这两天需要做有关MFC连接Oracle的项目,上网搜了老半天,东拼西凑,终于搞通了MFC下ADO方式连接Oracle的程序。

下面就按我新建的项目来进行一下说明(项目名称:adooracle)​


 第一步:

StdAfx.h头文件中加入#import "c:\program files\common files\system\ado\msado15.dll"\

no_namespace rename("EOF","adoEOF")

//这句#import……是我见得最多的,可是加上了这句话,在VS3013下是没法运行的​

#include "UrlMon.h"

#include "Shlwapi.h"

#include "ShObjIdl.h"

​//上下头文件之间需要有空行,没空行,我试了会报错

#include

//还必须在​ StdAfx.h下加上这四个头文件,方可继续运行

//同时运用了msado15.dll,会提前报错,提示找不到msado15.mlh等文件,按F6生成方案即可​

在StdAfx.h中添加的情况


第二步:

在头文件adooracle.h中声名

public:  _ConnectionPtr m_pConnection;//连接对象指针


 第三步:

adooracle.cppInitInstance()函数中加入下列代码:

 AfxOleInit();//初始化COM

 try//连接数据库

 {

  m_pConnection.CreateInstance(__uuidof(Connection));

  _bstr_t strConnect="Provider=MSDAORA.1;User ID='system';Password='renzh';Data Source=orcl;Persist Security Info=False;";

  m_pConnection->Open(strConnect,"system","renzh",adModeUnknown);

 }

 catch(_com_error e)

 {

  AfxMessageBox(TEXT("数据库连接出错!"));

  AfxMessageBox(e.Description());

  exit(-1)​;

 }


第四步:

数据库就打开了,在所有的类中都可以这样调用:

theApp. m_pConnection->Execute((_bstr_t)sql,NULL,adCmdText);

然后在要访问记录集的地方声名一个记录集指针:

CString sql=_T("这里面是执行语句!!"):

_RecordsetPtr pRs("ADODB.RecordSet");

 pRs->Open((_bstr_t)sql,_variant_t((IDispatch *)theApp.m_pConnection,true),adOpenStatic,adLockOptimistic,adCmdText);

if (!(pRs->adoBOF))//如果记录集不空

{

……

}

取出记录集信息可以用pRs-> GetCollect_r(_T("某个属性列名")));它的返回值是_variant_t,根据需要可以对它进行转换。如在ClistCtrl对象的插入中:

m_grd.SetItemText(0,0,(LPTSTR)(_bstr_t)(pRs-> GetCollect_r(_T("第一列的属性名"))));

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多