begin process at 2012 02 12 10:22:12
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

image + char* + mysql


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

image + char* + mysql

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ée 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

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

 
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,640 sec (3)

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