Acceder à une base access avec dev-cpp

cs_michael62 Messages postés 1 Date d'inscription mardi 30 mai 2006 Statut Membre Dernière intervention 12 juin 2006 - 12 juin 2006 à 11:19
sambalien Messages postés 3 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 11 janvier 2010 - 14 mai 2009 à 18:12
Bonjour,

j'essaie d'acceder aux données d'une base access avec dev-c++ mais je n'y arrive pas :-(
quelqu'un aurrai t-il un exemple simple de code pour le faire.

pour info, il sagit d'une base access 2003 et de dev-c++ 4.9.9.2

merci d'avance

1 réponse

sambalien Messages postés 3 Date d'inscription lundi 11 mai 2009 Statut Membre Dernière intervention 11 janvier 2010
14 mai 2009 à 18:12
tu dois d'abord creer une base de donnees access simple
ensuite il te faudra utiliser le ODBC(Open DatBase Connectivity) de windows, cet outil est deja sur ton ordinateur si tu utilises le winXp.
pour acceder a cet outil tu fais Start>Run>odbcad32>Enter
maintenant tu choisiras l'onglet System DSN tu clic sur le bouton Add et tu choisis Driver Microsoft Access dans la liste deroulante et tu cliques sur Finish une boite de dialogue apparaitra pour que tu puisses indiquer ou se trouve ta base de donnees. (La bdd doit etre fermee lors de cette operation).
Apres tu essais ce code sources

#include <windows.h>
#include <sql.h>
#include <sqlext.h>
// #include <sqltype.h>

int main()
{
    SQLHENV environnement;  // cette varible cree l'environnement qui sera le parent de notre connexion
    if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_ENV, NULL, &environnement)) )
        fprintf(stderr, "La fonciton SQLAllocHandle a echoue.\n");
    else
    {
        if ( !SQL_SUCCEEDED(SQLSetEnvAttr(environnement, SQL_ATTR_ODBC_VERSION, (void *) SQL_OV_ODBC3, 0)) )
            fprintf(stderr, "La fonction SQLSetEnvAttr a echoue.\n");
        else {
             SQLHDBC connexion;
            
             if ( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_DBC, environnement, &connexion)) )
                 fprintf(stderr, "La fonction SQLAllocHandle a echoue (SQL_HANDLE_DBC).\n");
             else {
                  SQLCHAR dsn[] = "pays_dsn", uid[] = "melem", pwd[] = "1234";
                 
                  if ( !SQL_SUCCEEDED(SQLConnect(connexion, dsn,SQL_NTS, uid, SQL_NTS, pwd, SQL_NTS)) )
                      fprintf(stderr, "La fonction SQLConnect a echoue.\n");
                  else {
                       SQLHSTMT statement;
                      
                       if( !SQL_SUCCEEDED(SQLAllocHandle(SQL_HANDLE_STMT, connexion, &statement)) )
                           fprintf(stderr, "La fonction SQLAllocHandle a echoue (SQL_HANDLE_STMT).\n");
                       else {
                                if ( !SQL_SUCCEEDED(SQL_ExecDirect(statement, "SELECT * FROM pays_tbl;", SQL_NTS)) )
                                    fprintf(stderr, "La fonction SQL_ExecDirect a echoue.\n");
                                else {
                                     SQLCHAR pays[15], capitale[15];
                                     printf("PAYS > CAPITALE\n\n");
                                    
                                     while (SQL_SUCCEEDED(SQLFetch(statement)) )
                                     {
                                           SQLGetData(statement, 1, SQL_C_CHAR, pays, sizeof(pays), NULL);
                                           SQLGetData(statement, 2, SQL_C_CHAR, capitale, sizeof(capitale), NULL);
                                           printf("%-14s %-14s", pays, capitale);
                                           }
                                     }
                                    SQLFreeHandle(SQL_HANDLE_STMT, statement);   
                            }
                            SQLDisconnect(connexion);
                       }
                       SQLFreeHandle(SQL_HANDLE_DBC, connexion);
                  }
                
             }
              SQLFreeHandle(SQL_HANDLE_ENV, environnement);
        }
        return 0;
}

NB.-  Le nom de la base que j'ai utilise est pays_db et mon pilote a le nom de pays_dsn
0
Rejoignez-nous