Savez vous comment 'acceder à une base access via visual C++ ?
Merci d'avance pour votre aide.
Version imprimable
Savez vous comment 'acceder à une base access via visual C++ ?
Merci d'avance pour votre aide.
en utilisant le composant ODBC (Open Date Base Connectivity), voici trois fonctions qui te permettrons de faire énorment de chose avec ta base de donnée:
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // creation de l'environnement ODBC int OdbcConnEnvCreate() { SQLRETURN retcd; retcd = SQLAllocHandle(SQL_HANDLE_ENV, SQL_NULL_HANDLE, &henv); if(retcd & 0xFFFE) return 0; retcd = SQLSetEnvAttr(henv, SQL_ATTR_ODBC_VERSION, (SQLPOINTER)SQL_OV_ODBC3, 0); if(retcd & 0xFFFE) goto envOut; retcd = SQLAllocHandle(SQL_HANDLE_DBC, henv, &hconn); if(!(retcd & 0xFFFE)) return 1; envOut: SQLFreeHandle(SQL_HANDLE_ENV, henv); return 0; }
Code:
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 // Connection à la base Access int OdbcMdbConnect(int bReadOnly, char* dbname, char* dbpwd) { // dbname et dbpwd en options // dbpwd pris en compte SI dbname est fourni SQLRETURN retcd; char *c; if(bReadOnly) SQLSetConnectAttr(hconn, SQL_ATTR_ACCESS_MODE, (SQLPOINTER)SQL_MODE_READ_ONLY, 0); c = bnstrcpy(szbuff, "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="); if(dbname) { if(dbname[0]) { c = bnstrcpy(c, dbname); if(dbpwd) { if(dbpwd[0]) { *c = ';'; *(c+1) = 'P'; *(c+2) = 'W'; *(c+3) = 'D'; *(c+4) = '='; c = bnstrcpy(c+5, dbpwd); } } } } retcd = SQLDriverConnect(hconn, 0, (SQLCHAR*)szbuff, c - szbuff, 0, 0, 0, SQL_DRIVER_COMPLETE_REQUIRED); return ((retcd & 0xFFFE) == 0); }
et tu utilises les fonctions comme ceci:Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 // Fonction permettant d'effectuer des requêtes int OdbcExecAction(char *pszqry) // RETOURNE != 0 SI ERREUR { SQLHANDLE hstmt; retcd = SQLAllocHandle(SQL_HANDLE_STMT, hconn, &hstmt); if(retcd & 0xFFFE) return 1; // ERREUR retcd = SQLExecDirect(hstmt, (SQLCHAR*)pszqry, 60); SQLFreeHandle(SQL_HANDLE_STMT, hstmt); return (retcd & 0xFFFE); }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 // creation environnement ODBC if(OdbcConnEnvCreate()) { if(OdbcMdbConnect(0, szFile, 0)) { // ACTION OdbcExecAction(requete); // execution de la requete SQLDisconnect(hconn); // deconnection // liberation de memoire SQLFreeHandle(SQL_HANDLE_DBC, hconn); SQLFreeHandle(SQL_HANDLE_ENV, henv); } }
voila les fonctions sont directement utilisable...
Si tu es débutant et que tu utilise les MFC je te conseille d'aller chercher une lib ADOLIB.LIB qui encapsule une classe complete DAO te permettant a n'avoir a gerer pratiquement que tes requetes SQL.
Cordialement
Et la :faq:
je voulais savoir ou est ce que je pourrais me procurer ADOLIB.LIB.
Merci !!