Question

Nous avons un site Web ASP.NET qui utilise une base de données à laquelle nous souhaitons pouvoir utiliser une chaîne de connexion. Nous avons configuré avec succès un DSN pour la connexion à cette base de données, mais je n'arrive pas à découvrir la magie à utiliser avec une chaîne de connexion.

Existe-t-il un moyen simple de convertir les valeurs du DSN en chaîne de connexion? Je sais que dans l'interface utilisateur, il n'y a pas de réponse évidente à cela ... chaque fournisseur de base de données fournit une interface utilisateur différente pour la création d'un DSN en fonction de ses besoins. Cependant, j'espérais que sous l'interface utilisateur, il pourrait s'agir simplement de créer une chaîne de connexion en coulisse, et je pourrais regarder cela pour voir ce que je faisais mal. Tout espoir de cela? Si tel est le cas, avez-vous des conseils pour obtenir les informations dont j'ai besoin?

(Je suis allé sur connectionstrings.com pour essayer de m'assurer que ma chaîne de connexion est dans le bon format, mais rien ne semble fonctionner ... c'est pourquoi j'essaie cet étrange tact de transl-from-dsn .)

MODIFIER: Une chose sur laquelle je ne dois pas avoir été clair, c'est que nous ne souhaitons pas avoir d'entrée DSN. Nous en avons créé un et l’utilisons pour le moment, mais nous voulons pouvoir nous en débarrasser et utiliser une chaîne de connexion sans dsn.

Était-ce utile?

La solution

Si vous pouvez utiliser OLEDB, vous pouvez créer un Fichier UDL . Créez simplement un nouveau document texte, test.udl et double-cliquez dessus. Remplissez la boîte de dialogue, puis ouvrez-la à nouveau avec le Bloc-notes. Voilà, voici votre chaîne de connexion.

ODBC est un peu plus difficile: vous pouvez créer un fichier DSN à partir de l'administrateur ODBC ou explorer le registre dans HKLM\Software\ODBC\ODBC.INI\<DSN Name> pour un DSN système. Vous allez vous retrouver avec des paires nom / valeur. Vous devriez pouvoir les traduire en une chaîne de connexion. Le \\Driver répertorie la DLL réelle. Vous devez donc obtenir le nom du fournisseur auprès de HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>.

.

Si vous pouvez utiliser le fournisseur OLEDB pour ODBC, vous pouvez utiliser l’astuce UDL et lui demander de créer également une chaîne de connexion à partir d’un fichier ODBC DSN. La chaîne de connexion ODBC sera dans les propriétés étendues du fichier UDL.

Autres conseils

Si vous avez créé un DSN, celui-ci est le ConnectionString!

Vous pouvez simplement utiliser DSN=<YourDSNName> et le transmettre à un objet OdbcConnection.

Par exemple, en utilisant C #:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

Vous pouvez également utiliser le OdbcConnectionStringBuilder classe et définissez sa DSN propriété.

Pour développer la réponse de Mark Brackett à propos du registre: pour un ODBC 32 bits sous Windows 64 bits, le chemin du registre est HKLM \ Software \ Wow6432Node \ ODBC \ ODBC.INI \

Dans mon cas, il suffisait de:

  • Supprimer l'en-tête
  • Remplacez toutes les nouvelles lignes par des points-virgules
  • Utilisez des accolades comme séparateur de groupe

Voici mon fichier DSN créé par l'administrateur de source de données ODBC (3ème onglet & # 8212; Fichier DSN)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

Et voici à quoi ressemblait ma chaîne de connexion:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top