rebonjour,
voila j'ai un nouveau probleme, il 'agit de connecter une basse de donner access a mon programme !
en l'attente de votre réponse je vous pris, Madame, Monsieur, de croire en l'expression de mes sentiments les plus respectueux :D
Version imprimable
rebonjour,
voila j'ai un nouveau probleme, il 'agit de connecter une basse de donner access a mon programme !
en l'attente de votre réponse je vous pris, Madame, Monsieur, de croire en l'expression de mes sentiments les plus respectueux :D
le mieux c'est ADO, mais comme c'est assez fouillis, je te conseille de télécharger une classe qui l'encapsule, y 'en a sur http://www.codeguru.com/Cpp/data/mfc_database/ et www.codeproject.com.
sinon, fais une recherche sur le forum, j'ai ai déjà vu....
oki merci bcp :)
pour connecter une base donnée access a ton programme, tu peux utilisé soit ADO, que je ne connais pas bien, mais tu peux aussi utilisé ODBC. Voila trois fonction qui devrait te permettre de te débrouiller avec ta base de donnée:
voila normalement c bon, tu devrais pas avoir de pb !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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 // header #include <windows.h> #include <sql.h> #include <sqlext.h> // la librairie utilisé pour l'acces a la base #pragma comment(lib, "odbc32.lib") __inline char* bnstrcpy(char *dst, char *src) // return ptr sur NULL final { __asm { mov eax, dst mov ecx, src dec eax LcpyLoop: mov dl, [ecx] inc eax inc ecx mov [eax], dl or dl, dl jz short LcpyOut mov dl, [ecx] inc eax inc ecx mov [eax], dl or dl, dl jz short LcpyOut mov dl, [ecx] inc eax inc ecx mov [eax], dl or dl, dl jnz short LcpyLoop LcpyOut: } } // te permet de créé un environnmeent odbc pour connection a la bd 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; } // pour acceder a la bd int __stdcall 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); } // te permet de lancer une requete int __stdcall OdbcExecAction(char *pszqry) // RETOURNE != 0 SI ERREUR { SQLHANDLE hstmt; SQLRETURN retcd; 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); }
désoler me suis un peu planté au niveau des balise !
sinon personnellement je prefere utilisé ODBC pour connecter une base de données a mon programme !
en fait je pense que quand on fait un projet MFC on utilise ADO ! enfin pour les quelques programmes que j'ai vu cela était comme ca ADO -> MFC et ODBC -> API
ODBC est condamné.
Pas encore déprécié mais ça ne saurait tarder.
justement en fate c un projet mfc que j'ai fait , c'est pour sa que j'aurais voulu savoir comment marche l'activeX ADO ou au moins 'est le quel dans la liste des acticeX de visual studio .net
pourquoi donc? 8OCitation:
ODBC est condamné.