Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connexion générique OleDB

4 réponses
Avatar
nico.pyright
Bonjour à tous,

je cherche à me connecter à une base de données par l'intermédiaire
d'ODBC, mais sans connaitre à l'avance le type de base (oracle,
sqlserver, etc ...). La seule information dont je vais disposer est
donc le nom du DSN système.

Je cherche donc à savoir quelle chaine de connexion peut fonctionner
dans tous les cas (je croyais que l'interet d'odbc était justement de
pouvoir abstraire le type de driver)

d'où :

Private theOleDbConnection As OleDbConnection
...
theOleDbConnection = New OleDbConnection
theOleDbConnection.ConnectionString = ??

j'ai essayé plusieurs type de chaines, mais sans succès. Ou alors,
existe-t-il une autre solution pour avoir une connexion générique ??

( ps :
avec un code de ce style, ca fonctionne, mais il est bien entendu que
la solution de préciser le driver dans la chaine de connexion ne me
convient pas (pour mes tests, j'utilise une base oracle)

dim theOleDbConnection as New
OleDbConnection("Provider=oraOLEDB.Oracle;SERVER=myServer;Data Source
=myDsn;User Id=myUser;Password=myPwd;")
theOleDbConnection.Open()
)
( pps:
quant à une connexion de ce type :

Dim con As New Odbc.OdbcConnection("dsn=myDsn;User
Id=myUser;Password=myPwd;"

elle me provoque une execption sur la méthode open()

ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's
SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Driver
Manager] The driver doesn't support the version of ODBC behavior that
the application requested (see SQLSetEnvAttr). ERROR [01S00]
[Microsoft][ODBC driver for Oracle]Invalid connection string attribute

)


Merci par avance de votre aide.

Nicolas H.

4 réponses

Avatar
Patrice
Pour le driver Oracle je ne pense pas que cela soit User ID (UID je pense).
Que donne DSN=MyDSN tout court en stockant les ID dans la source (ne serait
ce que pour voir) ?

A mon avis, le plus simple serait plutôt de pouvoir configurer la chaine de
connexion à utiliser. Dans ce cas tu pourras faire ce que tu veux :
- utiliser un DSN
- utiliser un DSN avec un autre nom que celui en dur dans l'appli
- utiliser une connexion sans DSN
etc...

Patrice

--

"Nicolas H." a écrit dans le message de
news:
Bonjour à tous,

je cherche à me connecter à une base de données par l'intermédiaire
d'ODBC, mais sans connaitre à l'avance le type de base (oracle,
sqlserver, etc ...). La seule information dont je vais disposer est
donc le nom du DSN système.

Je cherche donc à savoir quelle chaine de connexion peut fonctionner
dans tous les cas (je croyais que l'interet d'odbc était justement de
pouvoir abstraire le type de driver)

d'où :

Private theOleDbConnection As OleDbConnection
...
theOleDbConnection = New OleDbConnection
theOleDbConnection.ConnectionString = ??

j'ai essayé plusieurs type de chaines, mais sans succès. Ou alors,
existe-t-il une autre solution pour avoir une connexion générique ??

( ps :
avec un code de ce style, ca fonctionne, mais il est bien entendu que
la solution de préciser le driver dans la chaine de connexion ne me
convient pas (pour mes tests, j'utilise une base oracle)

dim theOleDbConnection as New
OleDbConnection("Provider=oraOLEDB.Oracle;SERVER=myServer;Data Source
=myDsn;User Id=myUser;Password=myPwd;")
theOleDbConnection.Open()
)
( pps:
quant à une connexion de ce type :

Dim con As New Odbc.OdbcConnection("dsn=myDsn;User
Id=myUser;Password=myPwd;"

elle me provoque une execption sur la méthode open()

ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's
SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Driver
Manager] The driver doesn't support the version of ODBC behavior that
the application requested (see SQLSetEnvAttr). ERROR [01S00]
[Microsoft][ODBC driver for Oracle]Invalid connection string attribute

)


Merci par avance de votre aide.

Nicolas H.


Avatar
nico.pyright
merci de votre réponse

alors, j'ai essayé en faisant juste

dsn=monDsn;Password=monPwd avec un objet OdbcConnection et ca ne
fonctionne pas, j'ai toujours la meme exception.

Je ne comprends vraiment pas comment faire pour utiliser une source de
données ODBC, sans se soucier du type de la base de données.

Pourtant, il m'a semblé que ce n'était pas un concept abhérant. Ce
n'est pas possible ?

Merci de votre aide.

Nicolas H.


"Patrice" wrote in message news:...
Pour le driver Oracle je ne pense pas que cela soit User ID (UID je pense).
Que donne DSN=MyDSN tout court en stockant les ID dans la source (ne serait
ce que pour voir) ?

A mon avis, le plus simple serait plutôt de pouvoir configurer la chaine de
connexion à utiliser. Dans ce cas tu pourras faire ce que tu veux :
- utiliser un DSN
- utiliser un DSN avec un autre nom que celui en dur dans l'appli
- utiliser une connexion sans DSN
etc...

Patrice

--

"Nicolas H." a écrit dans le message de
news:
> Bonjour à tous,
>
> je cherche à me connecter à une base de données par l'intermédiaire
> d'ODBC, mais sans connaitre à l'avance le type de base (oracle,
> sqlserver, etc ...). La seule information dont je vais disposer est
> donc le nom du DSN système.
>
> Je cherche donc à savoir quelle chaine de connexion peut fonctionner
> dans tous les cas (je croyais que l'interet d'odbc était justement de
> pouvoir abstraire le type de driver)
>
> d'où :
>
> Private theOleDbConnection As OleDbConnection
> ...
> theOleDbConnection = New OleDbConnection
> theOleDbConnection.ConnectionString = ??
>
> j'ai essayé plusieurs type de chaines, mais sans succès. Ou alors,
> existe-t-il une autre solution pour avoir une connexion générique ??
>
> ( ps :
> avec un code de ce style, ca fonctionne, mais il est bien entendu que
> la solution de préciser le driver dans la chaine de connexion ne me
> convient pas (pour mes tests, j'utilise une base oracle)
>
> dim theOleDbConnection as New
> OleDbConnection("Provider=oraOLEDB.Oracle;SERVER=myServer;Data Source
> =myDsn;User Id=myUser;Password=myPwd;")
> theOleDbConnection.Open()
> )
> ( pps:
> quant à une connexion de ce type :
>
> Dim con As New Odbc.OdbcConnection("dsn=myDsn;User
> Id=myUser;Password=myPwd;"
>
> elle me provoque une execption sur la méthode open()
>
> ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's
> SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Driver
> Manager] The driver doesn't support the version of ODBC behavior that
> the application requested (see SQLSetEnvAttr). ERROR [01S00]
> [Microsoft][ODBC driver for Oracle]Invalid connection string attribute
>
> )
>
>
> Merci par avance de votre aide.
>
> Nicolas H.


Avatar
Paul Bacelar
"DSN=NomDeSourceDeDonnees" marche sans problème si le DSN est correctement
renseigné.

Pas besoin du PWD avec un DSN configuré.
--
Paul Bacelar


"Nicolas H." wrote in message
news:
merci de votre réponse

alors, j'ai essayé en faisant juste

dsn=monDsn;Password=monPwd avec un objet OdbcConnection et ca ne
fonctionne pas, j'ai toujours la meme exception.

Je ne comprends vraiment pas comment faire pour utiliser une source de
données ODBC, sans se soucier du type de la base de données.

Pourtant, il m'a semblé que ce n'était pas un concept abhérant. Ce
n'est pas possible ?

Merci de votre aide.

Nicolas H.


"Patrice" wrote in message


news:...
> Pour le driver Oracle je ne pense pas que cela soit User ID (UID je


pense).
> Que donne DSN=MyDSN tout court en stockant les ID dans la source (ne


serait
> ce que pour voir) ?
>
> A mon avis, le plus simple serait plutôt de pouvoir configurer la chaine


de
> connexion à utiliser. Dans ce cas tu pourras faire ce que tu veux :
> - utiliser un DSN
> - utiliser un DSN avec un autre nom que celui en dur dans l'appli
> - utiliser une connexion sans DSN
> etc...
>
> Patrice
>
> --
>
> "Nicolas H." a écrit dans le message de
> news:
> > Bonjour à tous,
> >
> > je cherche à me connecter à une base de données par l'intermédiaire
> > d'ODBC, mais sans connaitre à l'avance le type de base (oracle,
> > sqlserver, etc ...). La seule information dont je vais disposer est
> > donc le nom du DSN système.
> >
> > Je cherche donc à savoir quelle chaine de connexion peut fonctionner
> > dans tous les cas (je croyais que l'interet d'odbc était justement de
> > pouvoir abstraire le type de driver)
> >
> > d'où :
> >
> > Private theOleDbConnection As OleDbConnection
> > ...
> > theOleDbConnection = New OleDbConnection
> > theOleDbConnection.ConnectionString = ??
> >
> > j'ai essayé plusieurs type de chaines, mais sans succès. Ou alors,
> > existe-t-il une autre solution pour avoir une connexion générique ??
> >
> > ( ps :
> > avec un code de ce style, ca fonctionne, mais il est bien entendu que
> > la solution de préciser le driver dans la chaine de connexion ne me
> > convient pas (pour mes tests, j'utilise une base oracle)
> >
> > dim theOleDbConnection as New
> > OleDbConnection("Provider=oraOLEDB.Oracle;SERVER=myServer;Data Source
> > =myDsn;User Id=myUser;Password=myPwd;")
> > theOleDbConnection.Open()
> > )
> > ( pps:
> > quant à une connexion de ce type :
> >
> > Dim con As New Odbc.OdbcConnection("dsn=myDsn;User
> > Id=myUser;Password=myPwd;"
> >
> > elle me provoque une execption sur la méthode open()
> >
> > ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's
> > SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Driver
> > Manager] The driver doesn't support the version of ODBC behavior that
> > the application requested (see SQLSetEnvAttr). ERROR [01S00]
> > [Microsoft][ODBC driver for Oracle]Invalid connection string attribute
> >
> > )
> >
> >
> > Merci par avance de votre aide.
> >
> > Nicolas H.


Avatar
nico.pyright
et bien ma foi, ca vient peut-etre de ma configuration. En faisant
comme vous dites, j'ai le meme type d'exception que précédement citée
(pas de pb de password apparement).

Par contre, mon DSN, je le paramètre dans le panneau de configuration
par le bouton "source de données" --> driver microsoft ODBC for oracle
--> etc ... je précise la base, le login, mais jamais il me demande le
mot de passe. C'est bien comme ca qu'on paramètre une source de
données qu'on veut ouvrir avec un objet Odbc.OdbcConnection ??

Merci de votre aide

Nicolas H.




"Paul Bacelar" wrote in message news:...
"DSN=NomDeSourceDeDonnees" marche sans problème si le DSN est correctement
renseigné.

Pas besoin du PWD avec un DSN configuré.
--
Paul Bacelar


"Nicolas H." wrote in message
news:
> merci de votre réponse
>
> alors, j'ai essayé en faisant juste
>
> dsn=monDsn;Password=monPwd avec un objet OdbcConnection et ca ne
> fonctionne pas, j'ai toujours la meme exception.
>
> Je ne comprends vraiment pas comment faire pour utiliser une source de
> données ODBC, sans se soucier du type de la base de données.
>
> Pourtant, il m'a semblé que ce n'était pas un concept abhérant. Ce
> n'est pas possible ?
>
> Merci de votre aide.
>
> Nicolas H.
>
>
> "Patrice" wrote in message
news:...
> > Pour le driver Oracle je ne pense pas que cela soit User ID (UID je
pense).
> > Que donne DSN=MyDSN tout court en stockant les ID dans la source (ne
serait
> > ce que pour voir) ?
> >
> > A mon avis, le plus simple serait plutôt de pouvoir configurer la chaine
de
> > connexion à utiliser. Dans ce cas tu pourras faire ce que tu veux :
> > - utiliser un DSN
> > - utiliser un DSN avec un autre nom que celui en dur dans l'appli
> > - utiliser une connexion sans DSN
> > etc...
> >
> > Patrice
> >
> > --
> >
> > "Nicolas H." a écrit dans le message de
> > news:
> > > Bonjour à tous,
> > >
> > > je cherche à me connecter à une base de données par l'intermédiaire
> > > d'ODBC, mais sans connaitre à l'avance le type de base (oracle,
> > > sqlserver, etc ...). La seule information dont je vais disposer est
> > > donc le nom du DSN système.
> > >
> > > Je cherche donc à savoir quelle chaine de connexion peut fonctionner
> > > dans tous les cas (je croyais que l'interet d'odbc était justement de
> > > pouvoir abstraire le type de driver)
> > >
> > > d'où :
> > >
> > > Private theOleDbConnection As OleDbConnection
> > > ...
> > > theOleDbConnection = New OleDbConnection
> > > theOleDbConnection.ConnectionString = ??
> > >
> > > j'ai essayé plusieurs type de chaines, mais sans succès. Ou alors,
> > > existe-t-il une autre solution pour avoir une connexion générique ??
> > >
> > > ( ps :
> > > avec un code de ce style, ca fonctionne, mais il est bien entendu que
> > > la solution de préciser le driver dans la chaine de connexion ne me
> > > convient pas (pour mes tests, j'utilise une base oracle)
> > >
> > > dim theOleDbConnection as New
> > > OleDbConnection("Provider=oraOLEDB.Oracle;SERVER=myServer;Data Source
> > > =myDsn;User Id=myUser;Password=myPwd;")
> > > theOleDbConnection.Open()
> > > )
> > > ( pps:
> > > quant à une connexion de ce type :
> > >
> > > Dim con As New Odbc.OdbcConnection("dsn=myDsn;User
> > > Id=myUser;Password=myPwd;"
> > >
> > > elle me provoque une execption sur la méthode open()
> > >
> > > ERROR [IM006] [Microsoft][ODBC Driver Manager] Driver's
> > > SQLSetConnectAttr failed ERROR [01000] [Microsoft][ODBC Driver
> > > Manager] The driver doesn't support the version of ODBC behavior that
> > > the application requested (see SQLSetEnvAttr). ERROR [01S00]
> > > [Microsoft][ODBC driver for Oracle]Invalid connection string attribute
> > >
> > > )
> > >
> > >
> > > Merci par avance de votre aide.
> > >
> > > Nicolas H.