Connecter Mysql avec ODBC en c++
Bonjour,
J'ai un gros problème depuis plusieurs mois dans mon projet (projet 4ème année d'école d'ingénieur, ca presse!!). Je developpe un logiciel qui convertit des fichiers de généalogie. On stocke les infos dans une base de données dans le soft. Actuellement, l'importation de fichiers dans une base PostgreSql fonctionne très bien, la connexion se fait grace à ODBC. En revanche, je n'arrive pas à me connecter à MySql avec ODBC. Le serveur se situe sur une machine linux, le developpement se fait sous windows, sous microsoft.NET et en c++.
Voici le code de connexion :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
// Valeur de retour
int ret=DB_CONNECTION_ERREUR;
// Creation environnement
retcode = SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE, &env);
// Environnement correct
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
// On précise la version de ODBC utilisée
retcode = SQLSetEnvAttr(env,SQL_ATTR_ODBC_VERSION,(void*)SQL _OV_ODBC3,0);
// Version correcte
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
// Création environnement odbc
retcode = SQLAllocHandle(SQL_HANDLE_DBC,env,&hdbc);
// Environnement correct
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
// Initialisation du tps de connexion a 5 s.
SQLSetConnectAttr(hdbc,SQL_LOGIN_TIMEOUT,(void *)5,0);
// String de connexion passée en paramètre
char strCon[TAILLE_REQ];
strcpy(strCon,ConstruireConnexion().c_str());
// Connexion à une BDD
retcode = SQLDriverConnect(hdbc,NULL,(SQLCHAR *) strCon,SQL_NTS, (SQLCHAR*)OutConnectString,sizeof(OutConnectString ), &sqlInt,SQL_DRIVER_COMPLETE);
// Connexion BDD effectuée
if(retcode == SQL_SUCCESS || retcode == SQL_SUCCESS_WITH_INFO){
ret=InitBDD();
}
}
}
}
string COdbcMySql::ConstruireConnexion(){
//chaine de connexion que l'on passe
//"DRIVER={MySQL ODBC 3.51 river};DATABASE=ife;SERVER=roi;
//PORT=3306;UID=ife;PWD=********";
string sRes = "";
sRes += "DRIVER={";
sRes += m_sDriver;
sRes += "};DATABASE=";
sRes += m_sDatabase;
sRes += ";SERVER=";
sRes += m_sServer;
sRes += ";PORT=";
sRes += m_sPort;
sRes += ";UID=";
sRes += m_sId;
sRes += ";PWD=";
sRes += m_sMdp;
return sRes;
} |
Quand on exécute, le return code vaut -1. Est-ce que quelqu'un aurait une idée ? Est-ce que ca peut provenir de la chaine de connexion qui n'est pas bonne (mauvais paramètres ou pas dans le bon ordre?)
N'hésitez pas à me demander si vous avez besoin de plus de détails.
J'ai vraiment besoin d'aide !!!
Merci beaucoup !