vc++用ADO方式连接oracle问题

  今天装了个oracle客户端,准备写个访问远程oracle的程序。用的是vs2010,采用ADO的连接方法连接oracle,结果运行的时候总是报下面的错:

从提示可以看出是没有找到OraOLEDBups.dll这个动态链接库。

  我的连接oracle数据库的代码是:

 1 try{
 2             hr = m_pConnDes.CreateInstance("ADODB.Connection");
 3             if(FAILED(hr))    return ;
 4 
 5             CString sDNS;
 6             sDNS.Format("Provider=OraOLEDB.Oracle;Persist Security Info=False;
 7                         User ID=%s;Password=%s;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=%s)(PORT=%s)))(CONNECT_DATA=(SERVICE_NAME=%s)))",
 8                         sUserId,sPassword,sDBSource,"1521",sDBName);
 9 
10             hr = m_pConnDes->Open((_bstr_t)sDNS,(_bstr_t)sUserId,(_bstr_t)sPassword,adModeUnknown);
11 
12             strInfo.Format("%s:%s",sDBSource,sUserId);
13             m_strDb1 = strInfo;
14 
15             if(FAILED(hr))    return ;
16 
17         }catch(_com_error e)
18         {
19             CString errormessage;
20             errormessage.Format("数据库连接失败!
错误信息:%s", e.ErrorMessage());
21             AfxMessageBox(errormessage);
22         }                

  程序采用的是OraOLEDB.Oracle连接方式,需要OraOLEDBups.dll等驱动程序。开始以为是自己电脑上没有这个文件,后来到自己装的oracle客户端的文件夹的bin的文件夹中查看,发现这个文件时有的。

  

  看来是程序找不到OraOLEDBups.dll这个文件的路径。然后我到path中查看是否包含了bin这个目录,发现原来我的path中没有这个目录,然后把这个目录加到path中,在编译运行程序,还是报同样的错误。后来才想到我改path后没有重启vs,导致vs读取的path还是原来的值,重启vs后再运行程序就不报错了(自己不是很细心啊!!!)。

原文地址:https://www.cnblogs.com/chengxuyuancc/p/3194240.html