begin process at 2010 03 20 02:28:01
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Base de données

 > 

Autre

 > 

Problème Base de Données Bilbio de Classe


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Problème Base de Données Bilbio de Classe

samedi 4 novembre 2006 à 15:31:46 | Problème Base de Données Bilbio de Classe

Maiku

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 {

publicrefclass 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 Base

std::string driver =

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=";

std::string extension =

".mdb";

std::string chainedeconnexion =

"@"+driver+"Bd"+extension;

//Preparation de la Connexion à la Base de Données

OleDbConnection ObjetConnection =

gcnew OleDbConnection();

ObjetConnection =

gcnew OleDbConnection(chainedeconnexion);

//Ouverture de la Connection avec Access sur la Base de Données

ObjetConnection.Open();

return ObjetConnection;

}

public :

// "Execute Requete"

OleDbDataReader Requete(std::string requete,OleDbConnection ObjetConnection)

{

OleDbDataReader myReader=

""; //lecteur de Données

//Execution d'une Requete SQL

OleDbCommand ObjetCommand =

gcnew OleDbCommand(requete);

ObjetCommand.Connection = ObjetConnection;

myReader=ObjetCommand.ExecuteReader();

return myReader;

}

// "Fermer La Connection"

void FermerConnection(OleDbConnection ObjetConnection)

{

ObjetConnection->Close();

}

// "Traite les Requetes de plusieurs resultats dans un seul champ"

ArrayList PlusResultOneColString(OleDbDataReader lect)

{

ArrayList ^ Resultat =

gcnew ArrayList ();

int i;

if(lect.HasRows)

{

i=0;

while (lect.Read())

{

Resulta.Add(lect.GetValue(i)+

"");

i=i+1;

}

}

return Resultat;

}

// "Traite les Requetes contenant un seul résultat string"

char OneResultOneColString(OleDbDataReader lect)

{

std::string ligne=

"";

if(lect.Equals(""))

{

while (lect.Read())

{

ligne= lect.GetString(0);

}

}

return ligne;

}

// "Traite les Requetes contenant un seul résultat entier"

int OneResultOneColEntier(OleDbDataReader lect)

{

int ligne= 0;

if(lect.Equals(""))

{

while (lect.Read())

{

ligne = lect.GetInt32(0);

}

}

return ligne;

}

};

}

Quelqu'un pourrait-il me dire d'après lui ce qui cloche dans le code ?
Merci d'Avance
Maiku
samedi 4 novembre 2006 à 16:40:38 | Re : Problème Base de Données Bilbio de Classe

nightlord666

Membre Club

OleDbConnection ObjetConnection = gcnew OleDbConnection();

Ca n'est pas plutôt :

OleDbConnection^ ObjetConnection = gcnew OleDbConnection();



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.
samedi 4 novembre 2006 à 16:58:56 | Re : Problème Base de Données Bilbio de Classe

yann_lo_san

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;

samedi 4 novembre 2006 à 17:05:22 | Re : Problème Base de Données Bilbio de Classe

Maiku

Salut

Connection^ ObjetConnection = gcnew OleDbConnection();
A quoi sert le ^?

En ce qui concerne les copies genre pour le OleDbDataReader, c'est parce que en C# il faut l'initialiser avant de l'utiliser.

Maiku
samedi 4 novembre 2006 à 17:09:07 | Re : Problème Base de Données Bilbio de Classe

yann_lo_san

Oui mais quelles sont les erreurs du compilateur ?

samedi 4 novembre 2006 à 18:30:50 | Re : Problème Base de Données Bilbio de Classe

nightlord666

Membre Club
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.


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.
samedi 4 novembre 2006 à 18:35:11 | Re : Problème Base de Données Bilbio de Classe

Maiku

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.

Merci de votre aide d'avance
Maiku

samedi 4 novembre 2006 à 22:34:03 | Re : Problème Base de Données Bilbio de Classe

yann_lo_san

Voici ce qu'on trouve dans MSDN
Il faut utiliser des pointeurs ! pour simuler les références du C#  

#using <mscorlib.dll>

using System::String;         // et pas std::string !

__gc class M {
         String s1;                 // error
         String *s2;               // ok
         String f1();               // error
         String * f2();            // ok
         void g1(String s);      // error
         void g2(String * s);   // ok
};
samedi 4 novembre 2006 à 23:24:28 | Re : Problème Base de Données Bilbio de Classe

Maiku

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>

Maiku
samedi 4 novembre 2006 à 23:29:28 | Re : Problème Base de Données Bilbio de Classe

yann_lo_san

Il faut aussi compiler en /CLI ou /CLR, regarde les options du linker.


1 2

Cette discussion est classée dans : base, données, string, lect, objetconnection


Répondre à ce message

Sujets en rapport avec ce message

Lecture et ecriture d'une base de données access [ par thino ] SalutJe voudrai avoir un code pour accéder à ma base de données sur access par la methode d'accès DAO. connexion a une base de données [ par wres ] je voudré juste savoir comment je pe a partir de Visual C++ 6 (MFC), me connecter a une base de données créé sous access 2000 (.mdb) !si kelkun sait c Accèder à une base de données distante via internet [ par ditch ] Bonjour, je dois développer un outil en c++ permettant de mettre à jour une base de données PostgreSQL se trouvant sur un serveur distant accessible u MAJ d'une base de données direct [ par Ginyu ] Salut,J'ai crée un projet en MFC,Single Document File,Base de données en Snapshot.J'ai ma fenetre RecordView avec mes champs et tout mais quand je mod gros problème base de données [ par skysee ] Salut,j'ai un gros problème avec mase de données.J'utillise le composant ATL pour me connecter à ma base de données.Donc il mes génère 2 classes dont base de données avec VC++ [ par julok2 ] Salut,j'ai écris un programme qui doit lire dans une base de donnée. J'ai utilisé pour ça les classes CDaoRecordSet et CDaoRecordView de VC++.Ma premi connexion à une base de données avec c++ builder [ par hightec ] Salut à tous !Voilà je ne sais pas comment attaquer ma base de données access avec borland c++ builder.En fait j'essaye de remplir des dbcombobox en a espaces à droite [ par CHENRY ] en VC++ 6.0, je lis des datas dans une base de données SQL Server 2000. Dans la base de données, comme les champs string de la table ont une longueur ecrire dans une base de données access grâce à ODBC [ par volcomboy1 ] BonjourPourriez vous m'expliquer comment on fait pour créer des nouveau champs et des nouveau enregistrements dans une base de données acces grâce a o base de données [ par libree ] je veux acceder a une base et récuperer les records des tables dans une structure ceci en vc++merci pour l'aide


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,437 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales