C++连接Oracle,提示找不到某个库

LeonTown 2009-07-07 11:28:05
代码:

_ConnectionPtr m_pConnection;
m_pConnection.CreateInstance("ADODB.Connection");
m_pConnection->ConnectionTimeout=30;

//(1)
string strConn1 = "Provider=oraoledb.oracle; Data Source=intdbt; User ID=data1; Password=data1;";
m_pConnection->ConnectionString = strConn1.c_str(); //连接字符串

HRESULT hr = m_pConnection->Open("", "", "", adConnectUnspecified); //打开
//运行时,连接失败。提示:OraOLEDBpus10.dll: 找不到指定的模块。

//(2) 尝试另一种方法:
const char* pszConn = "Provider=OraOLEDB.Oracle.1;Persist Security Info=true;User ID=data1;Password=data1;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.99.16)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME= intdbt)))"
hr = m_pConnection->Open(_bstr_t(m_strConnString), "", "", adModeUnknown); //打开
//运行时,同样连接失败。提示也为:OraOLEDBpus10.dll: 找不到指定的模块。


请问,该如何解决这个问题呢?

谢谢!!
...全文
65 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jindan_jinming 的回复:]
你把Provider换成Provider= MSDAORA再试试看!
[/Quote]

你把Provider换成Provider= MSDAORA.1这个试过了没?
LeonTown 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lingyin55 的回复:]
希望有帮助
http://program.chaojimen.com/article/vc_database/7/c0a0790e-712b-46f4-b648-6df2bf254203.shtml
下面这个有解决方案

先安装了“管理员 (555MB)”,然后用Net Configuration Assistant配置了连接参数,然后再用VC写的程序去连接,竟然还提示“OraOLEDBpus10.dll 找不到指定的模块”,我查找了一下这个文件,在Oracle的安装目录的BIN目录下明明有的,而且BIN目录被添加进了环境变量的Path中,这样都找不到?…
[/Quote]

拷贝dll的方法,的确可以~

谢谢!
  • 打赏
  • 举报
回复
你把Provider换成Provider= MSDAORA再试试看!
lingyin55 2009-07-07
  • 打赏
  • 举报
回复
希望有帮助
http://program.chaojimen.com/article/vc_database/7/c0a0790e-712b-46f4-b648-6df2bf254203.shtml
下面这个有解决方案

先安装了“管理员 (555MB)”,然后用Net Configuration Assistant配置了连接参数,然后再用VC写的程序去连接,竟然还提示“OraOLEDBpus10.dll 找不到指定的模块”,我查找了一下这个文件,在Oracle的安装目录的BIN目录下明明有的,而且BIN目录被添加进了环境变量的Path中,这样都找不到?!于是我就手工把这个文件拷贝到系统盘的system32目录下,再次运行VC写的程序,这回终于不报找不到OraOLEDBpus10.dll了,但是这回报了“OraOLEDB10us.dll 找不到指定的模块”,我晕,情况和上一个文件一样,于是我做了同样的处理,也放到了system32目录下,这回终于完全搞定了,问题解决!
https://www.dream4ever.org/archive/t-223215.html
LeonTown 2009-07-07
  • 打赏
  • 举报
回复
我的OS是windows xp
oracle是10g版本

我是远程连接,用sqlplus能够成功连接,并执行命令。

谢谢!
  • 打赏
  • 举报
回复
你先用sqlplus确定能过正常连接使用数据库,排除是DB本身的问题!
  • 打赏
  • 举报
回复
1.你用的什么OS,什么版本的ORACLE
2.你是本地连还是远程连
3.你去试试:“设置 oracle 安装目录的权限,设置权限用户的读写操作,将读写标志的对勾去掉,然后在将对勾打上,确定。”
4.应该不是驱动的问题
Fleeboy 2009-07-07
  • 打赏
  • 举报
回复
只能顶顶了。
楼主何不用oralce自己的Pro *C?
ChamPagneZ 2009-07-07
  • 打赏
  • 举报
回复
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Session Manager\KnownDLLs
里面有OraOLEDBpus10 这种项吗? 有的话要删掉它.
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lingyin55 的回复:]
希望有帮助
http://program.chaojimen.com/article/vc_database/7/c0a0790e-712b-46f4-b648-6df2bf254203.shtml
下面这个有解决方案

先安装了“管理员 (555MB)”,然后用Net Configuration Assistant配置了连接参数,然后再用VC写的程序去连接,竟然还提示“OraOLEDBpus10.dll 找不到指定的模块”,我查找了一下这个文件,在Oracle的安装目录的BIN目录下明明有的,而且BIN目录被添加进了环境变量的Path中,这样都找不到?…
[/Quote]

我觉得问题的实质是没有把“OraOLEDBpus10.dll ”和“OraOLEDB10us.dll ”这两个dll文件注册进系统,你不要拷贝,直接在CMD下,进入Oracle的安装目录的BIN目录,用regsvr32 OraOLEDBpus10.dll和regsvr32 OraOLEDB10us.dll 注册这两个文件试试!
照理来说一旦安装了ORACLE的client,这两个文件应该就已经被注册了!
会不会是你没有权限去读ORACLE的安装目录,你有试过这个没:“设置 oracle 安装目录的权限,设置权限用户的读写操作,将读写标志的对勾去掉,然后在将对勾打上,确定。”
LeonTown 2009-07-07
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jindan_jinming 的回复:]
引用 5 楼 jindan_jinming 的回复:
你把Provider换成Provider= MSDAORA再试试看!



你把Provider换成Provider= MSDAORA.1这个试过了没?
[/Quote]

这个试过,也是同样的问题。

64,643

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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