2016-01-04 108 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

相關問題