Afficher la boîte de dialogue de connexion ODBC

docflied Messages postés 4 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 août 2008 - 30 juil. 2008 à 19:20
docflied Messages postés 4 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 août 2008 - 1 août 2008 à 13:16
J'aurais voulu un coup de pouce (en vb.net ou c#) pour afficher la boîte de dialogue de connexion ODBC d'un driver donné.

Dans mon application Multi-BDD je crée dynamiquement une chaîne de connexion (en laissant l'utilisateur choisir le bon driver en fonction du type de la base de données choisie)

Jusqu'à là tout va bien.

Une fois la chaîne créée, je suis obligé d'ajouter les propriétés uid=user; pwd=password à la chaîne de connexion pour pouvoir effectivement me connecter.

Or si j'observe certains logiciels une fois la chaîne de connexion créée ils affichent une boîte de dialogue (a priori spécifique à chaque Driver ODBC) pour demander à l'utilisateur de saisir le User et le Password (entre autre)

Comment reproduire ce comportement ? Le but étant de ne plus avoir besoin de saisir "en dur" ou presque le uid=user;pwd=password.

Le but ultime étant d'ouvrir une connexion (System.Data.Odbc.OdbcConnection) précisant le user id et le password qui auraient été saisis dans cette boît de dialogue. Et le ponpon serait de ne pas avoir transbahuter le mot de passe dans une variable ou une concaténation.

Dans mon cas je teste avec un driver "Sybase ASE ODBC Driver" sur un SGBD Sybase 12.5.
Mais il faudrait que la procédure soit valable quelque soit le driver (bien entendu si c'est faisable et si je ne raconte pas des anneries)
D'ailleurs lorsqu'on configure une DSN (odbc manager) pour ce driver il y a un bouton "Test Connect" qui affiche la même boîte de dialogue que je cherche.

Terminé, à vous les experts

5 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
30 juil. 2008 à 20:24
Salut,

Ces pages lien et lien explique la démarche

Bon coding
0
docflied Messages postés 4 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 11:00
Bonjour et merci de ton aide
j'ai regardé en diagonale ces lien je creuserais un peu plus car à première vu ce n'est pas tout à fait ce que je cherche mais bon encore une fois c'est peut être moi qui n'a pas bien lu.
0
docflied Messages postés 4 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 12:25
Re bonjour à tous,

alors si j'importe dans mon projet .net la dll ADODB.dll (Microsfot ActiveX Data Objects 2.7)

et que j'écrive le code (à la VB6) suivant :

Dim

con
As ADODB.Connection

con = New ADODB.Connection
con.ConnectionString =
"DSN=maDSN;Prompt=Complete"
con.Open()
con.Close()

Là j'ai bien l'écran que je cerhche qui s'affiche et le login password sont donc transparents.

Si je fait :
Dim con
As System.Data.Odbc.OdbcConnection

con = New System.Data.Odbc.OdbcConnection
con.ConnectionString =
"DSN=maDSN;Prompt=Complete"
con.Open()
con.Close()

Là j'ai une erreur ODBC  qui me dit en gros que je n'ai pas fournit suffisament d'informations pour se connecter à la base et que le paramètre "Prompt" est invalide.

Le problème c'est que derrière j'ai une série de traitements qui prennent en charge une connexion de type OdbcConnection
Donc les questions derivées seraient :
Y'a t-il un moyen de fabriquer ou caster une connection OdbcConnection à partir d'une connection ADODB.Connection
Ou bien y'a t-il un équivalent du paramètre "Prompt=Complete" pour une connection OdbcConnection qui ne fasse pas planter

D'avance merci de votre aide.
0
nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
1 août 2008 à 13:00
Il y a pas de cast a faire
La chaine de connection est juste a recopier dans la propertie connectionstring de odbcConenction
et ca devrait rouler.

Non tester mais ca me parait logique
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
docflied Messages postés 4 Date d'inscription lundi 20 mars 2006 Statut Membre Dernière intervention 1 août 2008
1 août 2008 à 13:16
D'accord avec toi mais ... la logique du paradoxe :

J'ai tenté ceci.

Dim

sConnectionString
As
String
Dim tempcon
As ADODB.Connection
tempcon =
New ADODB.Connection
tempcon.ConnectionString =
"DSN=maDSN;Prompt=Complete"
tempcon.Open()  'Là la boîte de dialogue s'affiche

sConnectionString = tempcon.ConnectionString 'Je récupère la chaine de connexion "complétée"
tempcon.Close()

'Ici sConnectionString vaut "Provider=MSDASQL.1;Extended Properties="DSN=maDSN;NA=monSERVEUR,monPORT;DB=maBASE;UID=monUSERID;PWD=monPWD""

Dim con
As OdbcConnection
con =
New Odbc.OdbcConnection()
con.ConnectionString = sConnectionString
con.Open()

Et là j'ai l'erreur :
ERROR [IM002] [Microsoft][Gestionnaire de pilotes ODBC] Source de données introuvable et nom de pilote non spécifié

Donc une chaîne ADO ne semble pas compatible avec une chaîne ODBC (bon je raconte peut être des betises ma compréhension est une peu confuse entre provider et driver)

L'autre soluce serait que je parse la chaîne pour y extraire le uid et le pwd mais. Auront-ils toujours les identifiants UID et PWD ou bien sur d'autres drivers (ou provider je ne sais pas) ils auront d'autres identifiants ? (User Id et Password par exemple)
L'autre chose qui me gene est que j'aurais voulu que d'éventuels d'autres paramètres spécificques à une dirver ou à un autre "restent" dans la chaîne de connexion sans pour autant créer une usine à gaz pour aller les récupérer
Par exemple dans le driver Sybase sur lequel je teste il y a la possibilité (dans la fameuse boite de dialogue) de choisir le protocol entre WinSock et NamedPipes, de choisir une connexion SSL et de préciser le fichier des autthorités racines de confiance...

J'espère que je suis clair dans ma problématique.
En tous cas merci de vous donner la peine de m'aider
0
Rejoignez-nous