2016-01-04 75 views
0

我试图从Excel应用程序连接到Oracle数据库,但没有DNS。我在网站上发现可以使用ADO,所以这就是我试图去做的原因。我是新手,因此我完全复制了我在本网站上找到的内容。使用VBA连接到Oracle数据库的驱动程序

这是到目前为止我的代码:

Sub ADOtest() 

Dim connection As New ADODB.connection 

connection.ConnectionString = "UID = user1; PWD= my_pwd; DRIVER = {Microsoft ODBC for Oracle; Server= localhost; Database= orcl.my_domain;" 

connection.Open 

End sub 

当我运行这段代码,我得到一个错误说,司机没有被发现。

问题是我不知道我该怎么处理驱动程序(如何安装并配置它)。另外,我不知道应该使用哪一个:我读过微软的驱动程序,甲骨文的另一个驱动程序,也看到了有关诸如msdaora之类的提供程序的信息。

该程序将被许多用户使用,所以我想选择最轻的解决方案(在计算机上安装的并不多)。

谢谢!

回答

0

对于基于COM的ADO(ADODB),您可以使用OLE DB提供程序。

一位来自Oracle,名为“Oracle Provider for OLE DB”。你可以从32-bit Oracle Data Access Components (ODAC) and NuGet Downloads下载它(假设你的Excel是32位的)。连接字符串将是

"Provider=OraOLEDB.Oracle;Data Source=orcl;User ID=myUsername;Password=myPassword" 

另一个来自Microsoft。请注意,此提供商为deprecated,您不应将其用于新项目。通常它应该可以在Windows上使用。请注意,就像Oracle提供商一样,它还需要在PC上安装Oracle客户端!连接字符串将

"Provider=MSDAORA;Data Source=orcl;User ID=myUsername;Password=myPassword" 

数据源通常是在tnsnames.ora文件或LDAP服务器定义,例如:

orcl.my_domain = 
    (DESCRIPTION = 
    (ADDRESS = (PROTOCOL = TCP)(Host = localhost)(Port = 1521)) 
    (CONNECT_DATA = 
     (SERVICE_NAME = orcl)   
    ) 
) 

如果你没有这样的条目,就可以把一切都变成连接字符串,例如

"Provider=OraOLEDB.Oracle;Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(Host=localhost)(Port=1521))(CONNECT_DATA=(SERVICE_NAME=orcl)));User ID=myUsername;Password=myPassword" 

也许你有使用双引号(")围住数据源的值,我不知道。

因此,在任何情况下,您都必须在所有PC上安装Oracle客户端。

您的数据库服务器在哪里托管?在你的问题中,你说Server=localhost;,这是不太可能的,即它与相矛盾。该程序将被许多用户使用。我怀疑每个人都在他的本地主机上安装了Oracle数据库服务器。

+0

感谢您的回答! localhost只是因为我在部署程序之前在本地数据库上运行了一些测试。我将下载Oracle提供程序并尝试连接到数据库。非常感谢 ! – Firilou

相关问题