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("数据库连接失败!\r\n错误信息:%s", e.ErrorMessage()); 21 AfxMessageBox(errormessage); 22 }
程序采用的是OraOLEDB.Oracle连接方式,需要OraOLEDBups.dll等驱动程序。开始以为是自己电脑上没有这个文件,后来到自己装的oracle客户端的文件夹的bin的文件夹中查看,发现这个文件时有的。
看来是程序找不到OraOLEDBups.dll这个文件的路径。然后我到path中查看是否包含了bin这个目录,发现原来我的path中没有这个目录,然后把这个目录加到path中,在编译运行程序,还是报同样的错误。后来才想到我改path后没有重启vs,导致vs读取的path还是原来的值,重启vs后再运行程序就不报错了(自己不是很细心啊!!!)。