[C++ / SQL] Enregistrer un objet en tant que blob

Enregistrer un objet en tant que blob [C++ / SQL] - C++ - Programmation

Marsh Posté le 28-05-2008 à 11:51:44    

Bonjour,
 
Je rencontre actuellement un petit souci pour enregistrer un objet perso en tant que blob dans une base SQL (mes connaissances en SQL se résument malheureusement à copier/coller des bouts de code déjà existant, je suis stagiaire dans une boîte, et ne fais que réutiliser des codes. Passé le insert into, je bugge :))
 
Voilà ma classe :  

Code :
  1. class CSignature
  2. {
  3. private:
  4.         CvHistogram * histotot;
  5. CvHistogram * histotop;
  6. CvHistogram * histobottom;
  7. public:
  8. ~CSignature(void);
  9. CSignature(void);
  10.         CSignature(const CSignature & signsrc);
  11. CSignature & operator = (const CSignature & signsrc);
  12. void FillHisto(const CvHistogram * histosrc);
  13. void FillHistoTop(const CvHistogram * histosrc);
  14. void FillHistoBottom(const CvHistogram * histosrc);
  15. CvHistogram * GetHisto(void){return(histotot);};
  16. CvHistogram * GetHistoTop(void){return(histotop);};
  17. CvHistogram * GetHistoBottom(void){return(histobottom);};
  18. };


 
Les CvHistogram étant des structures d'openCV contenant en gros 2-3 int/float et un gros tableau.
 
J'ai trouvé des explications diverses sur internet sur comment enregistrer une image en blob. La méthode consiste apparemment à passer par un fichier où enregistrer l'image. Seulement je ne sais pas comment m'y prendre avec un objet quelconque.
 
J'ai plusieurs pistes cependant : dois-je essayer de passer par un fichier de la même manière ? Dois-je surdéfinir les opérateurs de flot pour que l'insertion se passe sans problème avec des commandes du type :  

Code :
  1. query << "INSERT INTO process(sType, sDescription, idPlanObject, iC_template_path) VALUES('" << mysqlpp::escape << type << "', '"
  2.    << mysqlpp::escape << Encode(std::string(description)) << "', " << idPlanObject << ", '')";


(ça n'a rien à voir, mais c'est un exemple).  
 
Dois-je définir des fonctions pour transformer mon objet en une chaîne de caractères que je sache encoder/décoder ?
 
Bref si quelqu'un peut me confirmer qu'une de ces pistes peut aboutir, ou m'en suggérer une meilleure, ça pourrait beaucoup m'aider.
 
Merci.
 
Sylvain.

Reply

Marsh Posté le 28-05-2008 à 11:51:44   

Reply

Marsh Posté le 28-05-2008 à 14:32:02    

Remonte petit topic, et apporte moi une aide somme toute assez urgente :(

Reply

Marsh Posté le 28-05-2008 à 15:01:51    

la technique classique de serialisation consiste à prendre toutes les données de ton objets de les écrires dans un tableau de unsigned char et de sauvé ce tableau sous forme de blob.

Reply

Marsh Posté le 28-05-2008 à 15:06:27    

et à faire de l'injection aussi.

Reply

Marsh Posté le 28-05-2008 à 15:10:45    

ah ça aprés moi SQL \o/ je pense juste que le bon vieux serialize to bytestream avait l'air aps mal [:pingouino]

Reply

Marsh Posté le 28-05-2008 à 15:12:06    

Joel F a écrit :

ah ça aprés moi SQL \o/ je pense juste que le bon vieux serialize to bytestream avait l'air aps mal [:pingouino]


si c'est un fichier, il suffit de le lire et ouala.

Reply

Marsh Posté le 28-05-2008 à 15:15:25    

Ok, je saisis bien le concept de sérialisation, c'est un peu ce que je craignais devoir faire - et ça m'a l'air potentiellement fastidieux vu la tête bien imbriquée de mes objets -
 
Quid de l'injection par contre, de quoi s'agit-il ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed