c++在64位windows 2008上连接oracle 报未找到 Oracle 客户端和网络组件
try
{
m_pRecordset.CreateInstance(__uuidof(Recordset));
m_pConnection->CursorLocation = adUseClient;
CString strCn;
strCn.Empty();
_bstr_t connStr;
CString strConn = _T("");
strConn.Format(_T("Provider=MSDAORA.1;User ID=%s;Password=%s;Data Source=%s;Persist Security Info=True "),UserName,Pwd,db);
m_pConnection->Open(_bstr_t(/*connStr*/strConn),(_bstr_t)_T(""),(_bstr_t)_T(""),adConnectUnspecified); // 执行这里就报错了
.......
}
catch (_com_error &e)
{
e.Description();
CTime tm;
tm = CTime::GetCurrentTime();
strErrorInfo.Format("%d-%d %d:%d 数据库连接失败, 错误信息:%s ", tm.GetMonth(), tm.GetDay(), tm.GetHour(), tm.GetMinute(), e.ErrorMessage());
return FALSE;
}
报错信息:
_com_error::Description 返回 {"未找到 Oracle 客户端和网络组件。这些组件是由 Oracle 公司提供的,是 Oracle 7.3.3 版(或更高)客户软件安装的一部分。在安装这些组件之前,将无法使用此提供程序。" (1)}
按照网上说的方法 修改了权限,还是不行,oracle装的是11g,客户端已经安装了。这个问题困扰很久,一直不能解决,
程序在xp下开发的,完全正常运行,放到服务器(64位windows 2008)上就报这个错,求大家指导指导啊。
[解决办法]
Oracle服务器端和Oracle客户端需要一致,要么都是32位,要么都是64位.
同时如果Oracle客户端是32位,你的程序也应该是32位,Oracle客户端64位,你的程序也应是64位的.