Créer DSN pour mysql par code
Voici la question je me pose en ce moment: Comment créer un DSN pour mysql par code c++ sous window xp.
A partir de cette question, j’ai cherché la réponse sur google, mais pas grande chose trouvée. Ou même des points intéressants trouvés mais à cause des petites erreurs cela fonctionne pas.
Voilà la solution sous windows xp et avec mysql connector3.51, j’espère que cela peut vous aider dans le même cas ou vous en avez besoin.
Bien entendu, il faut utiliser API SQLConfigDataSource dans le odbccp32.dll.
Vous devez inclure fichier tête #include <ODBCINST.H> SQLConfigDataSource (NULL, ODBC_ADD_DSN, "MySQL ODBC 3.51 Driver" , "SERVER=localhost\0DSN=YourDsnName\0UID=Titi\0PWD=123456\0DATABASE=MyTestDB\0\0") dont Titi est userid et 123456 est votre password…… Faire attention que chaque élément de 4ème paramètre est terminé par \0, et let le 4ème paramètre lui même est termine par \0. Je vous rappelle que 3ème paramètre dépend la version de votre odbc, simplement écrit MySql comment certain dit sur Internet ne fonctionne pas.
Pour le détail de API, veuillez aller en msdn. Généralement, on peut faire les opérations ci-dessous
ODBC_ADD_DSN = 1 # Ajouter une source de donnée utilisateur
ODBC_CONFIG_DSN = 2 # Configurer source une source de donnée
ODBC_REMOVE_DSN = 3 # Supprimer une source de donnée
ODBC_ADD_SYS_DSN = 4 # ajouter une source de donnée au niveau système
DSNODBC_CONFIG_SYS_DSN = 5 # Configurer une source de donnée au niveau système
DSNODBC_REMOVE_SYS_DSN = 6 # remove a system DSN
Si vous faites cela dans une c++ exemple Visual C++ sans MFC , n’oublie par d’inclure windows.h avant odbcinst.h, faute de cela la compilation arrête avec message
includesqltypes.h(114) : error C2146: syntax error : missing ';' before identifier 'SQLHWND'