Accueil > > > MANIPULER UNE BASE DE DONNÉE ACCESS EN C (DEV-C++)
MANIPULER UNE BASE DE DONNÉE ACCESS EN C (DEV-C++)
Information sur la source
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
- // 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;
- }
// 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;
}
Historique
- 14 avril 2007 19:22:12 :
- Merci encore BruNews pour l'optimisation de la boucle ;-)
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
builder+ bdd ACCESS [ par makandja ]
Salut à tous,Je dois réaliser un programme qui lit les données d'un fichier texte pour les enregistrer dans une bdd ACCESS. Le programme doit lire les
Accéder à une BDD access en VC++.NET [ par baptistemazet ]
Comment faire ? Ce serait la base de développement d'un programme pour moi ! Merci de me dire les ressources éventuelles à prendre en c
bdd Access depuis C++ Builder6 [ par kich ]
je suis étudiante et je réalise mon PFE pour un problème d'ordonnancement. je dois accéder à une base de donnée Access depuis c++ Builder 6 et je vien
nombre de colonne bdd access [ par ouamtax ]
Bonjour,existe t'il un moyen de connaitre le nombre de colonnes d'une table soit par requete SQL soit par une instruction C.En C, pour l'exécution d'u
bdd access [ par myann ]
slut a tous!au fait, je viens creer une application sur c++ builder contenant une DBGrid et je voudrais connecter celle ci a une base de donnees sur a
[Pilote ODBC Microsoft Access] Trop peu de paramètres. 8 attendu [ par sniperinternet ]
salut je developpe un pogramme qui traite une liste d'etudiant avec QT. j'utilse QT creator 1.2 sur windows XP. le programme est simple il charge la
parcourir une bdd access [ par azamharir ]
salutcomment je peut en parcourant les dossiers avec mfc parcourir aussi une bdd access pour voir ses tables et leurs champs?si quelqu'un peut m'orien
Appli C++ console et bdd Access [ par boninou ]
Bonjour,Je travaille sur une application en mode console et je souhaiterais me connecter le plus simplement possible à une base de données access afin
supprimer une ligne d'un datagridview et d'une bdd access [ par pam006 ]
Bonjour, Je suis développe une application .net avec visual studio 2008 et access 2010. Cette application consiste a gérer une médiathèque. J'utilise
Configuration DevCpp sous windows et SFML [ par tiouil ]
Bonjour, suite à un gros plantage de windows, j'ai du tout réinstaller y compris DevCpp. Le problème est que j'ai un projet C++/SFML que je doit rendr
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|