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

Soyez le premier à donner votre avis sur cette source.

Vue 26 872 fois - Téléchargée 4 872 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
mohamed2two Messages postés 2 Date d'inscription mardi 21 juin 2011 Statut Membre Dernière intervention 27 avril 2014
22 juin 2011 à 19:33
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
Gaston0510 Messages postés 4 Date d'inscription mercredi 30 janvier 2008 Statut Membre Dernière intervention 10 décembre 2010
10 déc. 2010 à 16:01
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 ?
17wydad Messages postés 3 Date d'inscription jeudi 27 septembre 2007 Statut Membre Dernière intervention 25 août 2010
25 août 2010 à 14:20
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
dguilloteau Messages postés 1 Date d'inscription vendredi 18 janvier 2008 Statut Membre Dernière intervention 3 juin 2008
3 juin 2008 à 16:50
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é?
kanue Messages postés 1 Date d'inscription vendredi 21 septembre 2007 Statut Membre Dernière intervention 21 septembre 2007
21 sept. 2007 à 20:28
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)