Problème open sur connection ADO

Signaler
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006
-
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
-
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

Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Je ne me souviens pas d'avoir mis d'exemple ADOX ici.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
bgheap.c ??? jamais eu besoin de cela en direct API.

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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!
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
Tu peux utiliser cela juste sous le #import

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

ciao...
BruNews, Admin CS, MVP Visual C++
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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 ^^
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++
Messages postés
278
Date d'inscription
mardi 22 janvier 2002
Statut
Membre
Dernière intervention
29 août 2006

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à !
Messages postés
21042
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
27
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++