Manipuler une base de donnée access en c (dev-c++)

Soyez le premier à donner votre avis sur cette source.

Vue 25 427 fois - Téléchargée 4 720 fois

Description

Bonjour,

Après avoir parcouru quelques sites je viens de trouver une solution
simple mais efficace d'ouvrir et d'exécuter des requêtes
sur une base de donnée Microsoft Access en C !!!

Le code a été compiler avec Dev-C++ ;-)

IMPORTANT : il faut le compiler avec la librairie "libodbc32.a"
(Dans Dev-C++ allez dans le menu : Projet->Options du projet->Paramètre->Editeur de liens, et mettre le chemin de la librairie "C:/Dev-Cpp/lib/libodbc32.a
")

Bon courage a tous ++

Source / Exemple :


// Connexion et execution de requete sur un base de donnees Microsoft Access
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <sql.h>
#include <sqlext.h>

#pragma comment(lib, "odbc32.lib")

int main(int argc, char *argv[])
{
    HENV hEnv;
    HDBC hDbc;
    RETCODE rc;
    
    int iOut;
    char strOut[256];
    char szDSN[256] = "driver={Microsoft Access Driver (*.mdb)};dbq=[test.mdb];";
    char szSql[256] = "SELECT * FROM One";
    
    int ret1;
    int ret2;
    int ret3;
    int ID;
    char Name[128];
    char Login[128];
    
    // 1 - Connexion a la BDD Access
    rc = SQLAllocEnv(&hEnv);
    rc = SQLAllocConnect(hEnv, &hDbc);
    rc = SQLDriverConnect(hDbc, NULL, (unsigned char*)szDSN, SQL_NTS, (unsigned char*)strOut, 255, (SQLSMALLINT*)&iOut, SQL_DRIVER_NOPROMPT);
    
    // 2 - Preparation de la requete
    HSTMT hStmt;
    rc = SQLAllocStmt(hDbc,&hStmt);
    rc = SQLPrepare(hStmt,(unsigned char*)szSql, SQL_NTS);
    
    // 3 - Execution de la requete (Apres avoir binder les champs de resultats)
    //rc = SQLBindCol(hStmt, tab_column, tr_type, tr_value, tr_len, len_or_ind);
    rc = SQLBindCol(hStmt, 1, SQL_C_ULONG, &ID, 4, (SQLINTEGER*)&ret1);
    rc = SQLBindCol(hStmt, 2, SQL_C_CHAR, Name, 128, (SQLINTEGER*)&ret2);
    rc = SQLBindCol(hStmt, 3, SQL_C_CHAR, Login, 128, (SQLINTEGER*)&ret3);
    rc = SQLExecute(hStmt);
    
    // IMPORTANT : Pour les requetes du style DROP/CREATE/UPDATE...
    // Vous pouvez utiliser : rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS);
    
    // 4 - Boucle pour afficher les resultats
    while(!(SQLFetch(hStmt) & 0xFFFE))
    {
        printf("{%i}{%s}{%s}\n", ID, Name, Login);
    }
    
    // 5 - Liberations et fermeture de la connection a la BDD
    rc = SQLFreeStmt(hStmt, SQL_DROP);
    rc = SQLDisconnect(hDbc);
    rc = SQLFreeEnv(hEnv);
    
    getch();

    return 0;
}

Codes Sources

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
mardi 21 juin 2011
Statut
Membre
Dernière intervention
27 avril 2014

Bonjours,
Je vien d'apprendre le langage MySql et je veux le connecter a mes application en C++ (en utilisant la Biblotèque Qt) y'a il kelk1 qui pe m'aider et m'expliquer cmt est ce que je doit faire.
je vous serai trés reconnaissant
Messages postés
4
Date d'inscription
mercredi 30 janvier 2008
Statut
Membre
Dernière intervention
10 décembre 2010

Bonjour,
j'ai utilisé le code avec dev-C++ et depuis 3 jours j'essaye de creer une nouvelle table :
// IMPORTANT : Pour les requetes du style DROP/CREATE/UPDATE...
// Vous pouvez utiliser : rc = SQLExecDirectA(hStmt,(unsigned char*)szSql,SQL_NTS);
j'ai pas pu le faire ..
j'ai essayer avec :
const char *red="CREATE TABLE liste_proprietaire (numero INT(5) NOT NULL AUTO_INCREMENT,nom VARCHAR(20) NOT NULL,telephone VARCHAR(14) NOT NULL,PRIMARY KEY (numero));";
SQLExecDirectA(hStmt, (UCHAR FAR *)red, SQL_NTS);
mais sa marche pas !
quelqu'un peu m'aider svp ?
Messages postés
3
Date d'inscription
jeudi 27 septembre 2007
Statut
Membre
Dernière intervention
25 août 2010

bonjour,
je vous prie de me donner un exemple illustrant la madification/suppression des données en c++ sur une base de données acess
Messages postés
1
Date d'inscription
vendredi 18 janvier 2008
Statut
Membre
Dernière intervention
3 juin 2008

Bonjour,
J'ai utiliser ce code avec code::blocks sous vista pour ouvrir une connexion avec un fichier Access. Il compile parfaitement sauf que j'ai des "undefined reference" pour chaque fonctions concernant le SQL. Est ce que quelqu'un pourrai m'éclairé?
Messages postés
1
Date d'inscription
vendredi 21 septembre 2007
Statut
Membre
Dernière intervention
21 septembre 2007

Bomjour,
j'ai installé et essayer de compiler ce code. J'ai installer Dev-C++ et quand je compile le code, il me dit que le fichier n'a pas été retrouvé.
Merci pour l'aide
Afficher les 14 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Du même auteur (Any_Problem_Have_Solution)