Salut,

- Je voudrais établir dans mon programme C une connexion à une base de données crée sous Mysql(j'ai instalé EasyPHP-1.7-setup). Sachant que mon programme C est sous Visual Studio 2008.

- La vesion de mysql est 4.0.15.
- J'ai trouvé seulement le dossier bin sous:
C:\Program Files\EasyPHP 1.7\mysql\bin
pas de dossiers lib et include .

- Quelles sont les étapes à suivre pour établir cette connexion pour que je puisse traiter des requêtes de sélection et de Mise à jour ?

- y-a-il un bon exemple de test pour vérifier ces étapes ?

Je serais très contente pour toute solution.


Je voudrais connecter à une base de données Mysql via ODBC à partir
d'un programme C sous Visual Studio 2008 Windows.
le nom de DSN est : pays_dsn
le nom d'utilisateur : root
le mot de passe est vide

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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
 
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>
 
int main()
{
    SQLHENV env;
 
    if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &env)) )
        fprintf(stderr, "La fonction SQLAllocHandle a echoue
(SQL_HANDLE_ENV).\n");
    else
    {
        if ( !SQL_SUCCEEDED(SQLSetEnvAttr(env, SQL_ATTR_ODBC_VERSION,
(void *)SQL_OV_ODBC3, 0)) )
            fprintf(stderr, "La fonction SQLSetEnvAttr a echoue.\n");
        else
        {
            SQLHDBC con;
 
            if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, env,
&con)) )
               fprintf(stderr, "La fonction SQLAllocHandle a echoue
(SQL_HANDLE_DBC).\n");
            else
            {
                SQLCHAR dsn[] = "pays_dsn", uid[] = "root", pwd[] =
"";
 
               if ( !SQL_SUCCEEDED(SQLConnect(con, dsn, SQL_NTS, uid,
SQL_NTS, pwd, SQL_NTS)) )
                                        // if ( !SQL_SUCCEEDED(SQLConnect(con,(SQLCHAR *)"pays_dsn",
SQL_NTS,(SQLCHAR *)"root", SQL_NTS,(SQLCHAR *)"", SQL_NTS)) )
                    fprintf(stderr, "La fonction SQLConnect a echoue.
\n");
                else
                {
                    SQLHSTMT stmt;
 
                    if ( !SQL_SUCCEEDED(SQLAllocHandle
(SQL_HANDLE_STMT, con, &stmt)) )
                        fprintf(stderr, "La fonction SQLAllocHandle a
echoue (SQL_HANDLE_STMT).\n");
                    else
                    {
                        if ( !SQL_SUCCEEDED(SQLExecDirect(stmt,
"SELECT * FROM pays_tbl;", SQL_NTS)) )
                            fprintf(stderr, "La fonction SQLExecDirect
a echoue.\n");
                        else
                        {
                            SQLCHAR pays[15], capitale[15];
 
                            printf("PAYS > CAPITALE\n\n");
 
                            while (SQL_SUCCEEDED(SQLFetch(stmt)))
                            {
                                SQLGetData(stmt, 1, SQL_C_CHAR, pays,
sizeof(pays), NULL);
                                SQLGetData(stmt, 2, SQL_C_CHAR,
capitale, sizeof(capitale), NULL);
                                printf("%-14s %-14s\n", pays,
capitale);
                            }
                        }
 
                        SQLFreeHandle(SQL_HANDLE_STMT, stmt);
                    }
 
                    SQLDisconnect(con);
                }
 
                SQLFreeHandle(SQL_HANDLE_DBC, con);
            }
        }
 
        SQLFreeHandle(SQL_HANDLE_ENV, env);
    }
    getch();
    return 0;
 
}
Après la compilation et l'exécution j'aurais ce message:

La fonction SQLConnect a echoue

J'ai pris cet exemple de lien suivant:
http://melem.developpez.com/langagec/odbc/

Comment ce problème de connexion va être résolue?
Avez-vous un exemple de test pour tester ma connexion et traiter quelques requetes ?

SVP, j'ai besoin de vos aides.