Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007
-
4 nov. 2006 à 15:31
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007
-
10 nov. 2006 à 21:18
Salut
Je débute en C++ mais en BTS j'ai travaillé sur du C#, et j'avais fait une bibliothèque de classe avec plein de fonctions sur les bases de données, manipulation de fichiers, de chaines,etc.
J'essaye de l'adapter pour qu'elle passe en C++, pour l'instant je m'interesse à celle sur la base de données, mais je rencontre beaucoup d'erreurs.
J'utilise un Pilote OleDb car normalement il passe en C++ et en C#.
Voici le code de la classe BasedeDonnees :
#include
"string"using
namespace System;
using
namespace System::Collections;
using
namespace std;
using
namespace System::Data;
using
namespace System::Data::OleDb;
namespace
Utilitaires {
public
ref
class BasedeDonnees{
public: BasedeDonnees(
void);
//Les Bases De Données
// "Crée Connexion Access "
OleDbConnection Connection(std::string Bd)
{
//On tente d'accèder à la base de données
//Chaîne de Connexion à la Basestd::string driver =
<hr size="2" width="100%" />
Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 nov. 2006 à 16:58
Attention, en C# les objets sont tous des références. Et ici tu utilises en C++ des objets valeurs, aucune communication par référence ou pointeurs. Je ne dis pas que c'est pas bien, mais que tu fais beaucoup de copie.
ex :
OleDbDataReader myReader = "";
...
myReader = executeReader()...
return myReader;
nightlord666
Messages postés746Date d'inscriptionvendredi 17 juin 2005StatutMembreDernière intervention23 mai 200710 4 nov. 2006 à 18:30
Si je me rappelle bien des deux semaine où j'ai fait du C++ .NET / CLI, je pense qu'il faut mettre des ^ pour indiquer au compilateur que ce sont des objets gérés par le runtime .NET. Le gcnew sert à la même chose.
<hr size="2" width="100%" />Sachant qu'on peut toujours enlever une ligne à un programme, et que dans un programme il y a toujours un bug, un programme peut se résumer à une ligne avec un bug.
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007 4 nov. 2006 à 18:35
Il y en a plusieurs :
Error 3 error C2664: 'System::Data::OleDb::OleDbConnection::OleDbConnection(System::String ^)' : cannot convert parameter 1 from 'std::string' to 'System::String ^' c:\documents and settings\amy\mes documents\visual studio 2005\projects\utiltairescpp\utiltairescpp\UtiltairesCpp.h 41
pour la ligne : ObjetConnection =
gcnew OleDbConnection(chainedeconnexion);
Error 8 error C2440: 'return' : cannot convert from 'System::Data::OleDb::OleDbConnection ^' to 'System::Data::OleDb::OleDbConnection' c:\documents and settings\amy\mes documents\visual studio 2005\projects\utiltairescpp\utiltairescpp\UtiltairesCpp.h 50
pour la ligne: return ObjetConnection;
Error 9 error C2664: 'System::Data::OleDb::OleDbCommand::OleDbCommand(System::String ^)' : cannot convert parameter 1 from 'std::string' to 'System::String ^' c:\documents and settings\amy\mes documents\visual studio 2005\projects\utiltairescpp\utiltairescpp\UtiltairesCpp.h 61
pour la ligne :
OleDbCommand^ ObjetCommand =
gcnew OleDbCommand(requete);
Error 10 error C2664: 'void System::Data::Common::DbCommand::Connection::set(System::Data::Common::DbConnection ^)' : cannot convert parameter 1 from 'System::Data::OleDb::OleDbConnection' to 'System::Data::Common::DbConnection ^' c:\documents and settings\amy\mes documents\visual studio 2005\projects\utiltairescpp\utiltairescpp\UtiltairesCpp.h 63
pour la ligne :ObjetCommand->Connection = ObjetConnection; //J'ai changé la ligne avant j'avais mis ObjetCommand.Connection
Bien sur il y a d'autres erreurs, mais bon déjà si j'arrive à comprendre celle là et à les résoudre ce sera un grand pas.
Il y a d'autres erreurs à propros des Exceptions et d'un MessageBox mais d'après moi c'est un problème de using manquant, il faut juste que je trouve lesquels.
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007 4 nov. 2006 à 23:24
Salut
Ben quand j'ecris String *var;
Il me met une erreur;
et j'ai bien ajoutéer mscorlib en référence, mis le using System::String; et le #using <mscorlib.dll>
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 nov. 2006 à 23:38
Il faut que tu clique droit sur ton projet, dans l'arbre des fichiers (explorateur de solution) à droite, option proprietés et choisis dans le tree, editeur de lien, la tu peux mettre des option de compilation (lib, param ect...), Rajoute l'activation des extentions managed (ou regardes dans l'aide pour managed c++
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007 4 nov. 2006 à 23:49
Tu dis activer Extension Managées, mais je n'ai pas de cases à cocher de ce type.
En plus, j'utilise Visual Studio.Net 2005 c'est peut etre différent non ?
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 4 nov. 2006 à 23:57
En fait, rajoute simplement sur la ligne de commande de ta compilation :
/clr
As tu déjà compilé un programme à la main :
cl.exe /clr /autresoption /t:win ect...
Et bien tu peux faire la meme chose avec les options graphiques de ton projet.
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007 5 nov. 2006 à 00:03
Non je n'ai jamais compilé un programme C++ à la main , je te l'ai dit, je débute, j'essaye de faire un programme de gestion de bibliothèque et c'est pour ça que je dois manipuler les bases de données et les chaines de caractères.
Mais je vois pas ou je peux rajouter /clr dans General, en plus c'est en anglais grrrr!!!
Maiku
Messages postés190Date d'inscriptiondimanche 10 avril 2005StatutMembreDernière intervention 4 juillet 2007 10 nov. 2006 à 12:20
Salut
Merci yann_lo_san pour la Class System::String
J'arrive à l'utiliser, car par défaut Visual Studio.Net 2005 gere le Clr, toufefois pour utiliser String , je dois déclarer de la façon suivante :
String^ var = gcnew String("");
(donc je dois pas utiliser le * )
Sinon au sujet de la Bibliothèque de Classe BasedeDonnées, etc.
J'ai réussi à la réadapter de C# à C++, je mettrais le code concernant la BasedeDonnées, une fois que les dernières erreurs seront corrigées, en tant que source, car ça peut en intéresser certains.
Par Contre, dernier problème, je n'arrive pas à me connecter à la base de données , c'est le provider qui bloque, quand j'affiche ce qu'il contient , j'ai une petite idée du prob, je verrais, et vous tiendrais au courant ce soir.
yann_lo_san
Messages postés1137Date d'inscriptionlundi 17 novembre 2003StatutMembreDernière intervention23 janvier 201626 10 nov. 2006 à 13:39
Et oui, j'utilise VStudio 2003 et apparemment c'est bien different...
Va falloir que je me mette à la derniere version.
Alors bonne continuation Maiku.