web-dev-qa-db-fra.com

Syntaxe de la chaîne de connexion pour Classic ADO / ODBC / Oracle 10g EZConnect

J'essaie de connecter divers projets VBA à un back-end Oracle 10g à l'aide de ADO (2.8) et pas de TNS. Après différentes tentatives, nous avons décidé que la série d'étapes la plus simple pour une installation propre comprend:

  1. Configurer un client instantané Oracle
  2. Installez le pilote ODBC fourni
  3. (Testez la connexion avec EZCONNECT via SQL Plus)
  4. (Testez la connexion en créant un DSN Windows)

Tout fonctionne bien jusqu'à présent. Le problème est que je ne peux pas comprendre la syntaxe pour dire à ADO d'utiliser le pilote instant client ODBC, qui apparaît dans mon pilote ODBC liste en tant que "Oracle dans MyTest" (sans guillemets). Utiliser le pilote MSFT ODBC avec EZConnect en tant que cet article suggère que cela ne fonctionne pas mieux qu’avant la configuration du client instantané (c’est-à-dire pas du tout). Mais cet article semble suggérer qu'il est possible, sans préciser comment, et connectionstrings.com ne vous dit que ce à quoi ressemble la partie source de données de la chaîne, c.-à-d. AServer: PortNumber/InstanceName

Version abrégée: Quelle est la syntaxe exacte d'une chaîne de connexion classique ADO référençant un pilote client instantané ODBC?

Merci d'avance pour votre aide. Il m'a fallu un long temps stupide pour y aller avec SO ...

10
downwitch

Semblable à la réponse de 'user1206604 - J'ai établi une connexion ODBC à l'aide de ODBC administrateur de source de données (par exemple, nous l'appelons' DEMO ') et je me connecte comme suit:

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

L'administrateur de la source de données ODBC se trouve (sur ma machine) dans le menu Démarrer> Programmes> Oracle - oraClient10g> Outils de configuration et de migration> Microsoft ODBC administrateur et se présente comme suit:

ODBC Data Source Administrator

4
Richard

Essayez ceci et remplacez les valeurs comme il convient:

Set Connection = CreateObject("ADODB.Connection")

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

Si Oracle dans instantclient ne fonctionne pas, vérifiez la clé de registre HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBCINST.INI\ODBC Drivers pour voir quelle est la valeur pour Oracle Instant Client (un numéro de version peut être ajouté).

Si cela ne fonctionne toujours pas pour vous. Laissez un commentaire avec les détails de ce qui s'est passé et je vais essayer d'ajuster la réponse pour vous.

2
JamieSee
' 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
0
user1206604