Classic ADO / ODBC / Oracle 10g EZConnect的连接字符串语法

时间:2010-08-03 15:50:35

标签: oracle vba excel-vba ado access-vba

我正在尝试使用ADO(2.8)和没有TNS将各种VBA项目连接到Oracle 10g后端。经过各种尝试,我们认为最简单的一系列干净安装步骤包括:

  1. 设置Oracle Instant Client
  2. 安装随附的ODBC驱动程序
  3. (通过SQL Plus使用EZCONNECT测试连接)
  4. (通过创建Windows DSN测试连接)
  5. 到目前为止的一切都很好。问题是,我无法弄清楚告诉ADO使用即时客户端 ODBC驱动程序的语法,该驱动程序在我的ODBC驱动程序列表中显示为“Oracle in MyTest”(无引号)。将MSZ ODBC驱动程序与EZConnect一起使用为this post建议不会比设置即时客户端之前更好(也就是说,完全没有)。但是this post似乎表明它是可能的,没有确切说明如何,connectionstrings.com只告诉你字符串的数据源部分是什么样的,即     对待SomeUser / SomePassword @ Aserver的:端口号/实例名称

    简短版本:引用即时客户端ODBC驱动程序的传统ADO连接字符串的确切语法是什么?

    提前感谢您的帮助。给我一个愚蠢的长时间来与SO ... ...

3 个答案:

答案 0 :(得分:4)

与'user1206604的答案 - 类似 - 我使用ODBC数据源管理员建立了一个ODBC连接(例如我们将它命名为'DEMO')并连接如下:

Dim conn As New adodb.Connection
Set conn = New adodb.Connection

connStr = "Provider=OraOLEDB.Oracle;Data Source=DEMO;User Id=yourUserID;Password=yourPassword;"
conn.Open connStr

Dim api As New adodb.Recordset
Set api = New adodb.Recordset

yourQueryString = "SELECT foo FROM bar"
api.Open yourQueryString, conn, adOpenDynamic, adLockReadOnly 
'adjust above setting as needed

while not api.EOF
  'do interesting stuff here
wend

'clean up resources
api.Close
Set api = Nothing

conn.Close
Set conn = Nothing

在开始菜单>中找到(在我的机器上)ODBC数据源管理员。节目> Oracle - oraClient10g>配置和迁移工具> Microsoft ODBC Administrator,如下所示:

ODBC Data Source Administrator

答案 1 :(得分:3)

尝试此操作并根据需要替换值:

Set Connection = CreateObject("ADODB.Connection")

blnTest = Connection.Open("Driver={Oracle in instantclient};Dbq=127.0.0.1:1521/SERVICENAMEHERE", "USERNAME", "PASSWORD")

如果Instantclient中的Oracle不起作用,请检查HKEY_LOCAL_MACHINE \ SOFTWARE \ ODBC \ ODBCINST.INI \ ODBC Drivers注册表项以查看Oracle Instant Client的值(可能附加版本号)。

如果这仍然不适合你。发表评论,详细说明发生的事情,我会尽力为你调整答案。

答案 2 :(得分:0)

' Create a connection object.'
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection

' Create a recordset object.'
Dim rs As ADODB.Recordset
Set rs = New ADODB.Recordset

' Provide the connection string.'
Dim strConn As String
Dim str As String

'Use the SQL Server OLE DB Provider.'
strConn = "Driver=(Oracle in OraHome92);" & "Data Source=;Uid=;Pwd=;"

'Now open the connection.'
cn.Open strConn
With rs

    ' Assign the Connection object.'
    ActiveConnection = cn

    ' Extract the required records.'
    .Open "SELECT ", cn


End With