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 :
- class CSignature
- {
- private:
- CvHistogram * histotot;
- CvHistogram * histotop;
- CvHistogram * histobottom;
- public:
- ~CSignature(void);
- CSignature(void);
- CSignature(const CSignature & signsrc);
- CSignature & operator = (const CSignature & signsrc);
- void FillHisto(const CvHistogram * histosrc);
- void FillHistoTop(const CvHistogram * histosrc);
- void FillHistoBottom(const CvHistogram * histosrc);
- CvHistogram * GetHisto(void){return(histotot);};
- CvHistogram * GetHistoTop(void){return(histotop);};
- CvHistogram * GetHistoBottom(void){return(histobottom);};
- };
|
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 :
- query << "INSERT INTO process(sType, sDescription, idPlanObject, iC_template_path) VALUES('" << mysqlpp::escape << type << "', '"
- << 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.