您的連接字符串錯誤,您不能同時使用Provider=OraOLEDB.Oracle
和Driver={Microsoft ODBC for Oracle}
。
如果你喜歡使用Oracle OLE DB提供程序試試這個:
Set oConn = CreateObject("ADODB.Connection")
oConn.provider = "OraOLEDB.Oracle"
DB = host & ":" & port & "/" & SERVICE_NAME
oConn.Open "Data Source=DB", User, pass
這應該是等同於:
Set oConn = CreateObject("ADODB.Connection")
DB = host & ":" & port & "/" & SERVICE_NAME
oConn.Open "Provider=OraOLEDB.Oracle;Data Source=DB;User Id=" & User & ";Password=" & pass
不過,我不知道甲骨文OLE DB是否支持Easy Connect Naming Method (EZ),我從來沒有用過它。如果它不支持EZ試試這個來代替:
DB = "(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=" & host & ")(PORT=" & port & "))(CONNECT_DATA=(SERVICE_NAME=" & SERVICE_NAME & ")))"
其實這樣的定義應該寫在tnsnames.ora
文件,例如
DB_TNS.your.domain =
(DESCRIPTION=
(ADDRESS=(PROTOCOL=tcp)(HOST=host)(PORT=1531))
(CONNECT_DATA=
(SERVICE_NAME=service_name)
(SERVER=server)
(INSTANCE_NAME=instance_name)
)
)
然後,你可以簡單地使用oConn.Open "Data Source=DB_TNS", User, pass
如果你喜歡使用ODBC驅動程序(雖然微軟的ODBC驅動程序是deprecated)使用這一個:ADO ConnectionStings
你的問題還不清楚。你有錯誤嗎?什麼是您的數據庫的TNSNAME和您的Microsoft Oracle驅動程序的版本是什麼?無論如何,答案可能是[這裏](https://www.connectionstrings.com/oracle/) –