Problème open sur connection ADO

Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006 - 17 août 2004 à 10:32
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 17 août 2004 à 15:19
Bonjour,
J'utilise ADO pour me connecter à une BDD, je fais le code suivant (sous VC++ 6.0):

    _ConnectionPtr m_pConnect; 
   char * ConnectionString = new char;
   strncpy(ConnectionString, "Driver=Microsoft Access Driver (*.mdb); DBQ=", 64);
   strncat(ConnectionString, database, 64); //database est l'adresse de ma BDD
   m_pConnect.CreateInstance(__uuidof(Connection)); 
   m_pConnect->Open((bstr_t)ConnectionString, "", "", -1);



et je ne sais pas pourquoi, j'ai toujours l'erreur "Unhandled Exception" (l'eternel Kernell32.dll) au moment de m_pConnect->Open()
Je usi sur que c'est très bête comme erreur, mais je la trouve pas..

Note : le code source que j'ai récup précédemment utilisait un type CString pour ConnectionString, mais je sais pas si ça change grand chose... et comme afx.h fait un peu la gueule quand il y a un #include <windows.h>, j'ai préféré ne pas l'utiliser.

11 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 10:52
Jamais de afx.h ou machins de ce genre.
Quand tu fais un new proj, clique toujours sur 'proprietes' avanr de valider et tu coches 'projet vide', tu auras ainsi toute liberte.
Regarde dans mes exemples ADO comment je connecte.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
17 août 2004 à 11:04
Nan mais bien sûr que je met toujours en porjet vide, ça C normal!
Les source que G récupéré, CT du copier coller!
Et pour tes sources, j'ai déjà regardé, C du ADOX, trop relou à capter!
Si j'arrive à voir pouruqoi ça passe pas sur mon open, c'est bon, j'ai gagné.
Apparemment, C pareil si j'ouvre un recordset directement aussi.
Merci quand meme
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 11:07
Je ne me souviens pas d'avoir mis d'exemple ADOX ici.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
17 août 2004 à 11:30
Autant pour moi, CT un message dans un forum
Bah j'ai regardé une de tes sources, apparemment on fait pareil...
J'ai utilisé ton test sur la création d'instance :
inline void TESTHR(HRESULT x) {if FAILED(x) _com_issue_error(x);};

J'ai l'impression qu'il ne me crée pas d'instance du tout... Il me demande le source de bgheap.c (si ça te donne une piste sur l'erreur, on sait jamais ^^)

Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 11:34
bgheap.c ??? jamais eu besoin de cela en direct API.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
17 août 2004 à 11:52
Bha je sais, moi non plus...
Bon, ça marche ma connection maintenant, j'avais juste oublié CoInitialize(NULL); ^__^;
Mias si tout passe, à la fin de mon main(), il me met toujorus cette erreur, il doit me manquer un truc pour fermer la connection à la fin (j'ai bien utilisé CoUninizialize() à la fin pourtant)

Je V chercher...

Merci!
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 12:05
Tu peux utiliser cela juste sous le #import

struct InitOle {
InitOle() {CoInitialize(NULL);}
~InitOle() {CoUninitialize();}
} _init_InitOle_;

ciao...
BruNews, Admin CS, MVP Visual C++
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
17 août 2004 à 14:16
Merci! C bon, ça marche... presque...
En fait, dernière question, pour récupérer les valeurs du recordset, tu utilises bien des structures de données, je fais pareil, mais comme je travaille en mode console, je veux les afficher directement, le problème est que ça ne donne rien avec le code que tu as mis : (long) pref[count].qualite
Ca m'afficher... un long... et si je le met en char, ça ne donne rien du tout, comme quand je n'essaye pas de caster.
Tu aurais une réponse?
Merci et désolé, normalement C ma dernière question ^^
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 14:21
Tu as la ref de cela ? peux pas me souvenir de tous les exemples.

Et que fais tu en console, c'est pour le siecle dernier ?

ciao...
BruNews, Admin CS, MVP Visual C++
0
Clonk Messages postés 278 Date d'inscription mardi 22 janvier 2002 Statut Membre Dernière intervention 29 août 2006
17 août 2004 à 15:01
La ref de la source C : http://www.cppfrance.com/code.aspx?ID=23130

nan C pas pour le sciècle dernier, comme c'est une appli qui tourne presque en autonome et les seules infos dont elle a besoin sont passées en paramètres par une autre appli, ça sert à rien de mettre une interface graphique... et puis comme jme suis jamais vraiment penché sur les interfaces en C++, bah tant mieux pour moi, j'ai pas à y penser

Voilà !
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
17 août 2004 à 15:19
C'est bien un char[12], devrait donc s'afficher correctement.
C'est en fait un code que j'ai corrige pour qlqun.
Je ne saurais rien te dire de plus, si tourne dans la source doit pouvoir tourner ailleurs.

ciao...
BruNews, Admin CS, MVP Visual C++
0
Rejoignez-nous