作者:iamlaosong
通过VBA连接Oracle数据库查询数据,一般有两种OleDB连接驱动方法,一种是用微软的驱动,另一种用Oracle驱动,Provider需要根据实际情况修改。这儿对我使用的环境做个记录。
1、Microsoft公司提供的OleDB驱动MSDAORA,据说只支持32位系统,我在32位系统下使用没有问题,其连接字符串如下:
connectionString="Provider=MSDAORA;Data Source=dataSource;User Id=userid;Password=password;"
或
connectionString="Provider=MSDAORA.1;Data Source=dataSource;User Id=userid;Password=password;"
其中MSDAORA.1是驱动的名称,“.1”据说是版本号,是COM的命名规则的一个约定格式,可以不写;dataSource是Oracle客户端配置的服务名,就是tnsnames.ora中配置的名称。
驱动程序msdaora.dll放在C:\Program Files\Common Files\System\Ole DB文件夹下面。
实际例子:
Set cnn = CreateObject("ADODB.Connection")
Set rst = CreateObject("ADODB.Recordset")
sqls = "connect database"
cnn.Open "Provider=msdaora;Data Source=dl580g9;User Id=emssxjk;Password=emssxjk;"
2、Oracle公司提供的OleDB驱动,支持32bit与64bit,需要安装Oracle Data Provider for OLE DB,Oracle客户端应该带了。我的电脑安装的简易客户端也有这个驱动,驱动程序路径是C:\Oracle\ora90\BIN\OraOLEDB.dll,其连接字符串如下:
connectionString="provider=OraOLEDB.Oracle;Persist Security Info=False;User ID=UserName;Data Source=DataBase;Extended Properties='';Password=Password"
或
connectionString="provider=OraOLEDB.Oracle.1;Persist Security Info=False;User ID=UserName;Data Source=DataBase;Extended Properties='';Password=Password"
形式和内容都和上面差不多,只要把MSDAORA.1换成OraOLEDB.Oracle.1就行了。
如果使用中发现无法连接,报实时错误3706:未找到提供程序,可以检查一下驱动个文件是否存在。
来源:oschina
链接:https://my.oschina.net/u/4335103/blog/4884373