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 !!