MFC和ORACLE数据库的连接怎么弄?

moshang005 2010-12-24 05:16:28
MFC和ORACLE数据库的连接怎么弄?还有数据库的确切点的配置,谢谢大家
...全文
725 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
jixiaomei20104622 2012-05-11
  • 打赏
  • 举报
回复
怎么这么复杂呀?
moshang005 2010-12-27
  • 打赏
  • 举报
回复
不行啊连接不上啊
测试NULL 2010-12-26
  • 打赏
  • 举报
回复
可以通过ADO或ODBC连接,还可以使用Pro*C和OCI,其中OCI最为麻烦
ADO连接的方法:
首先在StdAfx.h头文件中加入#import "c:\program files\common files\system\ado\msado15.dll"\

no_namespace rename("EOF","adoEOF")

然后在App类的头文件中声名

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

接着在App类的InitInstance()函数中加入下列代码:

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());

}

在App类响应EXITINSTANCE的消息中也可以加上:

if (m_pConnection->State)

m_pConnection->Close();

m_pConnection->Release();

我认为也没有这一步的必要(我自己是没有加的)



然后数据库就打开了,在所有的类中都可以这样调用: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("第一列的属性名"))));



至于用ODBC,Pro*C和OCI的方法楼主如果感兴趣可以到csdn下载里找资源,
ADO的也有,下个现成的代码学的更快
Six_dimensional 2010-12-24
  • 打赏
  • 举报
回复
没用过MFC连oracle,用过。net连,借助ADO

33,027

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧