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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !