Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : image + char* + mysql [ Archives / Au secours ] (cartouh)

mercredi 9 juillet 2003 à 18:09:02 | image + char* + mysql

cartouh

Hello

Voila, j'ai un big PRBLM!!!
je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.
pour cela, je lis mon fichier que je stocke dans un buffer, et je l'ecris dans un autre char* qu'est la requete...
mais voila, quand je le li, strlen(buff) fait 9343o et dans la requete, il represente 4o!!!!!!!
il doit rencontrer des char bizarre et il zappe...
du coup, j'ai fait un codee mais ca ne marche pas plus:


CFile f("plop.jpg",CFile::modeRead);
char *buff = new char[f.GetLength()];
char *buff_tr = new char[f.GetLength()*2];

f.Read(buff, f.GetLength());

int i,j=0, longeur = f.GetLength();

for (i=0; i<longeur; i++)
{
if (buff[i] == ????)
{
buff_tr[j] = '\\';
j++;
buff_tr[j] = buff[i];
j++;
}
else
{
buff_tr[j] = buff[i];
j++;
}
}

char *requet = new char[f.GetLength()*2+100];

strcpy(requet, "UPDATE test SET image='");
strcat(requet, buff_tr);
strcat(requet, "' WHERE login=\"plop\"");
query.exec(requet);


dans les ??? j'ai essayer 0, '\'', '\"', '\\' sans succée!
si vous avez des idées de commen faire, je vous en serez tres reconnaissant!!

j'utilise Visual C++ 6.0,mysql++.lib, la classe ostream me met plein d'erreur, la fonction mysql_escape_string ne fonctionne pas....
je ne sais pas quoi faire!

help me plize!
mici

a++ les gens...

mercredi 9 juillet 2003 à 18:12:36 | Re : image + char* + mysql

BruNews

Administrateur CodeS-SourceS
pas de strlen sur du binaire, surtout dans une image, y a plein de zeros.
BruNews, ciao...


-------------------------------
Réponse au message :
-------------------------------

> Hello
>
> Voila, j'ai un big PRBLM!!!
> je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.
> pour cela, je lis mon fichier que je stocke dans un buffer, et je l'ecris dans un autre char* qu'est la requete...
> mais voila, quand je le li, strlen(buff) fait 9343o et dans la requete, il represente 4o!!!!!!!
> il doit rencontrer des char bizarre et il zappe...
> du coup, j'ai fait un codee mais ca ne marche pas plus:
>
>

> CFile f("plop.jpg",CFile::modeRead);
> char *buff = new char[f.GetLength()];
> char *buff_tr = new char[f.GetLength()*2];
>
> f.Read(buff, f.GetLength());
>
> int i,j=0, longeur = f.GetLength();
>
> for (i=0; i<longeur; i++)
> {
> if (buff[i] == ????)
> {
> buff_tr[j] = '\\';
> j++;
> buff_tr[j] = buff[i];
> j++;
> }
> else
> {
> buff_tr[j] = buff[i];
> j++;
> }
> }
>
> char *requet = new char[f.GetLength()*2+100];
>
> strcpy(requet, "UPDATE test SET image='");
> strcat(requet, buff_tr);
> strcat(requet, "' WHERE login=\"plop\"");
> query.exec(requet);
>

>
> dans les ??? j'ai essayer 0, '\'', '\"', '\\' sans succée!
> si vous avez des idées de commen faire, je vous en serez tres reconnaissant!!
>
> j'utilise Visual C++ 6.0,mysql++.lib, la classe ostream me met plein d'erreur, la fonction mysql_escape_string ne fonctionne pas....
> je ne sais pas quoi faire!
>
> help me plize!
> mici
>
> a++ les gens...
>

mercredi 9 juillet 2003 à 19:24:18 | Re : image + char* + mysql

Kaid

Comme te l'a expliqué BruNews, ca ne marchera jamais à cause des '\0'. Je te suggère une solution, je ne sais pas si ca marche, pour remplacer ton UPDATE.



// Exemple de requête
const char strQuery[]=UPDATE test SET image='?' WHERE login='plop'";

// Création du statement
MYSQL_STMT * mysql_prepare(MYSQL *mysql, const char *query, unsigned long length)

// Attacher le paramètre
int mysql_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bind)

// Exécution du statement
int mysql_execute(MYSQL_STMT *stmt.


Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Hello
>
> Voila, j'ai un big PRBLM!!!
> je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.
> pour cela, je lis mon fichier que je stocke dans un buffer, et je l'ecris dans un autre char* qu'est la requete...
> mais voila, quand je le li, strlen(buff) fait 9343o et dans la requete, il represente 4o!!!!!!!
> il doit rencontrer des char bizarre et il zappe...
> du coup, j'ai fait un codee mais ca ne marche pas plus:
>
>

> CFile f("plop.jpg",CFile::modeRead);
> char *buff = new char[f.GetLength()];
> char *buff_tr = new char[f.GetLength()*2];
>
> f.Read(buff, f.GetLength());
>
> int i,j=0, longeur = f.GetLength();
>
> for (i=0; i<longeur; i++)
> {
> if (buff[i] == ????)
> {
> buff_tr[j] = '\\';
> j++;
> buff_tr[j] = buff[i];
> j++;
> }
> else
> {
> buff_tr[j] = buff[i];
> j++;
> }
> }
>
> char *requet = new char[f.GetLength()*2+100];
>
> strcpy(requet, "UPDATE test SET image='");
> strcat(requet, buff_tr);
> strcat(requet, "' WHERE login=\"plop\"");
> query.exec(requet);
>

>
> dans les ??? j'ai essayer 0, '\'', '\"', '\\' sans succée!
> si vous avez des idées de commen faire, je vous en serez tres reconnaissant!!
>
> j'utilise Visual C++ 6.0,mysql++.lib, la classe ostream me met plein d'erreur, la fonction mysql_escape_string ne fonctionne pas....
> je ne sais pas quoi faire!
>
> help me plize!
> mici
>
> a++ les gens...
>

jeudi 10 juillet 2003 à 10:42:46 | Re : image + char* + mysql

cartouh

Salut,

merci de votrte attention...

mais je ne comprend pas trop ton code...


> // Exemple de requête
> const char strQuery[]="UPDATE test SET image='?' WHERE login='plop'";

la ok, tu fait un template c'est ca?
ou alors je comprend pas... tu met koi dans le '?' ou c'est pour plus tard...

> // Création du statement
> MYSQL_STMT * mysql_prepare(mysql, strQuery, unsigned long length);

la je comprend plus trop....
Les parametres, c koi le unsigned long lenght??
c la longeur de koi?
et puis Visual il me dit: error C2065: 'MYSQL_STMT' : undeclared identifier


> // Attacher le paramètre
> int mysql_bind_param(mysql_prepare, MYSQL_BIND *bind);

tu attache le parametre a un etat declaré avant, la ok
mais, c'est koi le bind?
et puis tjrs: error C2065: 'MYSQL_BIND' : undeclared identifier

[Coded]> // Exécution du statement
> int mysql_execute(mysql_prepare);

et la tu execute l'etat, oki...

mais ce que je ne comprend pas trop:
- quand est ce que tu atache le char* buff à la requete??

si tu peux voir cec qui va pas...
mici

tiens tant que j'y suis, j'ai reussi à mettre la classe fstream (prblm de declaration dans plusierus lib)
et j'ai mis le code de l'exemple de mysql++:

ostrstream strbuf;
ifstream In ("plop.jpg",ios::in | ios::binary);
struct stat for_len;
if ((In.rdbuf())->is_open())
{
if (stat ("plop.jpg",&for_len) == -1) return false;
unsigned int blen = for_len.st_size;
if (!blen) return false;
char *read_buffer = new char[blen];
In.read(read_buffer,blen);
string fill(read_buffer,blen);
strbuf << "UPDATE test SET image='" << escape << fill << "' WHERE login='plop'";
query.exec(strbuf.str());
delete[] read_buffer;
}

ET CA MARCHE PAS...
il me met toujours 4caracteres dans le champ image, et pas tout....

AU SECOURS!!!!!!!!!!!!!!!!!!!!!!!!!!

a++ les gens...



-------------------------------
Réponse au message :
-------------------------------

> Comme te l'a expliqué BruNews, ca ne marchera jamais à cause des '\0'. Je te suggère une solution, je ne sais pas si ca marche, pour remplacer ton UPDATE.
>
>
>
> // Exemple de requête
> const char strQuery[]=UPDATE test SET image='?' WHERE login='plop'";
>
> // Création du statement
> MYSQL_STMT * mysql_prepare(MYSQL *mysql, const char *query, unsigned long length)
>
> // Attacher le paramètre
> int mysql_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bind)
>
> // Exécution du statement
> int mysql_execute(MYSQL_STMT *stmt.
>

>
> Kaid - kaid.fr.st
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Hello
> >
> > Voila, j'ai un big PRBLM!!!
> > je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.
> > pour cela, je lis mon fichier que je stocke dans un buffer, et je l'ecris dans un autre char* qu'est la requete...
> > mais voila, quand je le li, strlen(buff) fait 9343o et dans la requete, il represente 4o!!!!!!!
> > il doit rencontrer des char bizarre et il zappe...
> > du coup, j'ai fait un codee mais ca ne marche pas plus:
> >
> >

> > CFile f("plop.jpg",CFile::modeRead);
> > char *buff = new char[f.GetLength()];
> > char *buff_tr = new char[f.GetLength()*2];
> >
> > f.Read(buff, f.GetLength());
> >
> > int i,j=0, longeur = f.GetLength();
> >
> > for (i=0; i<longeur; i++)
> > {
> > if (buff[i] == ????)
> > {
> > buff_tr[j] = '\\';
> > j++;
> > buff_tr[j] = buff[i];
> > j++;
> > }
> > else
> > {
> > buff_tr[j] = buff[i];
> > j++;
> > }
> > }
> >
> > char *requet = new char[f.GetLength()*2+100];
> >
> > strcpy(requet, "UPDATE test SET image='");
> > strcat(requet, buff_tr);
> > strcat(requet, "' WHERE login=\"plop\"");
> > query.exec(requet);
> >

> >
> > dans les ??? j'ai essayer 0, '\'', '\"', '\\' sans succée!
> > si vous avez des idées de commen faire, je vous en serez tres reconnaissant!!
> >
> > j'utilise Visual C++ 6.0,mysql++.lib, la classe ostream me met plein d'erreur, la fonction mysql_escape_string ne fonctionne pas....
> > je ne sais pas quoi faire!
> >
> > help me plize!
> > mici
> >
> > a++ les gens...
> >
>

jeudi 10 juillet 2003 à 14:06:45 | Re : image + char* + mysql

Kaid

Je t'ai simplement mis une idée, je ne sais pas si c'est possible. N'ayant pas de base MySQL sous la main (n'ayant pas envie d'en installer une non plus), je t'ai simplement mis les prototypes des fonctions MySQL à appeller, que j'ai trouvé dans la documentation. A toi de bien utiliser ces fonctions.

Kaid - kaid.fr.st

-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> merci de votrte attention...
>
> mais je ne comprend pas trop ton code...
>
>
>
> // Exemple de requête
> > const char strQuery[]="UPDATE test SET image='?' WHERE login='plop'";

> la ok, tu fait un template c'est ca?
> ou alors je comprend pas... tu met koi dans le '?' ou c'est pour plus tard...
>
>
> // Création du statement
> > MYSQL_STMT * mysql_prepare(mysql, strQuery, unsigned long length);

> la je comprend plus trop....
> Les parametres, c koi le unsigned long lenght??
> c la longeur de koi?
> et puis Visual il me dit: error C2065: 'MYSQL_STMT' : undeclared identifier
>
>
>
> // Attacher le paramètre
> > int mysql_bind_param(mysql_prepare, MYSQL_BIND *bind);

> tu attache le parametre a un etat declaré avant, la ok
> mais, c'est koi le bind?
> et puis tjrs: error C2065: 'MYSQL_BIND' : undeclared identifier
>
> [Coded]> // Exécution du statement
> > int mysql_execute(mysql_prepare);

> et la tu execute l'etat, oki...
>
> mais ce que je ne comprend pas trop:
> - quand est ce que tu atache le char* buff à la requete??
>
> si tu peux voir cec qui va pas...
> mici
>
> tiens tant que j'y suis, j'ai reussi à mettre la classe fstream (prblm de declaration dans plusierus lib)
> et j'ai mis le code de l'exemple de mysql++:
>

> ostrstream strbuf;
> ifstream In ("plop.jpg",ios::in | ios::binary);
> struct stat for_len;
> if ((In.rdbuf())->is_open())
> {
> if (stat ("plop.jpg",&for_len) == -1) return false;
> unsigned int blen = for_len.st_size;
> if (!blen) return false;
> char *read_buffer = new char[blen];
> In.read(read_buffer,blen);
> string fill(read_buffer,blen);
> strbuf << "UPDATE test SET image='" << escape << fill << "' WHERE login='plop'";
> query.exec(strbuf.str());
> delete[] read_buffer;
> }
>

> ET CA MARCHE PAS...
> il me met toujours 4caracteres dans le champ image, et pas tout....
>
> AU SECOURS!!!!!!!!!!!!!!!!!!!!!!!!!!
>
> a++ les gens...
>
>
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Comme te l'a expliqué BruNews, ca ne marchera jamais à cause des '\0'. Je te suggère une solution, je ne sais pas si ca marche, pour remplacer ton UPDATE.
> >
> >
> >
> > // Exemple de requête
> > const char strQuery[]=UPDATE test SET image='?' WHERE login='plop'";
> >
> > // Création du statement
> > MYSQL_STMT * mysql_prepare(MYSQL *mysql, const char *query, unsigned long length)
> >
> > // Attacher le paramètre
> > int mysql_bind_param(MYSQL_STMT *stmt, MYSQL_BIND *bind)
> >
> > // Exécution du statement
> > int mysql_execute(MYSQL_STMT *stmt.
> >

> >
> > Kaid - kaid.fr.st
> >
> > -------------------------------
> > Réponse au message :
> > -------------------------------
> >
> > > Hello
> > >
> > > Voila, j'ai un big PRBLM!!!
> > > je desire lire une image jpg et la stocker dans uune base mysql, tout simplement.
> > > pour cela, je lis mon fichier que je stocke dans un buffer, et je l'ecris dans un autre char* qu'est la requete...
> > > mais voila, quand je le li, strlen(buff) fait 9343o et dans la requete, il represente 4o!!!!!!!
> > > il doit rencontrer des char bizarre et il zappe...
> > > du coup, j'ai fait un codee mais ca ne marche pas plus:
> > >
> > >

> > > CFile f("plop.jpg",CFile::modeRead);
> > > char *buff = new char[f.GetLength()];
> > > char *buff_tr = new char[f.GetLength()*2];
> > >
> > > f.Read(buff, f.GetLength());
> > >
> > > int i,j=0, longeur = f.GetLength();
> > >
> > > for (i=0; i<longeur; i++)
> > > {
> > > if (buff[i] == ????)
> > > {
> > > buff_tr[j] = '\\';
> > > j++;
> > > buff_tr[j] = buff[i];
> > > j++;
> > > }
> > > else
> > > {
> > > buff_tr[j] = buff[i];
> > > j++;
> > > }
> > > }
> > >
> > > char *requet = new char[f.GetLength()*2+100];
> > >
> > > strcpy(requet, "UPDATE test SET image='");
> > > strcat(requet, buff_tr);
> > > strcat(requet, "' WHERE login=\"plop\"");
> > > query.exec(requet);
> > >

> > >
> > > dans les ??? j'ai essayer 0, '\'', '\"', '\\' sans succée!
> > > si vous avez des idées de commen faire, je vous en serez tres reconnaissant!!
> > >
> > > j'utilise Visual C++ 6.0,mysql++.lib, la classe ostream me met plein d'erreur, la fonction mysql_escape_string ne fonctionne pas....
> > > je ne sais pas quoi faire!
> > >
> > > help me plize!
> > > mici
> > >
> > > a++ les gens...
> > >
> >
>



Cette discussion est classé dans : mysql, char, tr, buff, getlength


Répondre à ce message

Sujets en rapport avec ce message

Cherchez l'erreur... [ par andrealphus ] 4ndr&@lphu$Voilà mon code :LRESULT CALLBACK dialogProc4(HWND hDlg, UINT Umess, WPARAM wParamD, LPARAM lParamD){ int m_IdTimer=0; // ID du Problème copie de fichier.... [ par Clonk ] Bonjour,Je voudrais copier un fichier texte dans mon appli, j'ai fais la fonction suivante://Copie d'un fichier (création du backup)int copier(char * access violation [ par jerome86600 ] mon prog recupere les coordoné d une camera par reseau , separe les coordoné pour les convertir en numérique pour les envoyer sur la cammais voila j a Pbl Utilisation de l'API MySQL en C, Partie 1 [ par seedtrunks ] Bonjour Je débute en C et j'ai un problème sur le chapitre Utilisation de l'API MySQL en C, Partie 1 à cette adresse http://www.games-creators.org/wik Probleme d'Allocation [ par oliverman ] Je pense avoir un petit probleme d'allocation avec mes fonction:Si je fais :char * fonction ( int SIZE){char *buff;buff =new char[SIZE];//(char = 1oct convertir un double en char* [ par typhoun ] SalutJe voudrai savoir comment convertir un double en char *.char* buff;buff = (char*) malloc(15);double data = 0.3658975;je code en C++.NetMerci. URGENT : pb de conexion avec mysql_real_connect [ par Stephworlds ] salut a tousC'est éxtrémement urgent.Je doit me connecter sur une base de donées distante. Mon programme compile. Mais lorsque je lance l'appli la con transfert de fichier sous MFC [ par seito ] [size=5] seito [/size]bonjours,j'aimerais déveloper une application de transfert de fichier sous MFC avec Visual C++ 6.le code que j'ai conçus marche SVP besoin d'aide [ par seito ] [size=5] seito [/size]j'ai déveloper une apploication pour transferer des fichiersla reception est parfaite pourtant à l'envoie ça me cause des tas de Passage de requete mysql ! [ par chaya56 ] Bonjour,je tiens a prevenir que cela fait 2 ans que je n'ai plus fait de C++ et a l'epoque j'avais un niveau débutant !Donc ma question : pour un proj


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



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
Temps d'éxécution de la page : 0,515 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.