Re: Storing a BLOB in a MySQL database with the MySQL C API

2003-02-03 Thread Stephane Wirtel
i have a problem with my project :-)

i created two functions, base64_encode, and base64_decode, to insert a
binary file in a LONGBLOB field. When i use theses functions without a
buffer i don't get errors.
by example : OUTPUT = base64_decode(base64_encode(INPUT)); -- i don't
have errors, i can compare the OUTPUT with the INPUT, and i don't have
errors.

But when i use a temporary buffer, i have an error.
i have this problem with my mysql database. there is a differenct
character.

perhaps I have an error in my transfer of data with MySQL, or with a
simple char *tmp

Could i send you my code ? because i don't find the solution of my
problem.

Best Regards 

Stephane Wirtel









-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




Storing a BLOB in a MySQL database with the MySQL C API

2003-02-02 Thread Stephane Wirtel
Hi all !

I would like to insert a Blob ( a picture exactly ), here is a small
source code to test my insert.
You can find 2 sources code, the first is to insert a blob in a table of
a database ( this database exists in my MySQL server )

And the second code is to read this blob from the database.

I think there are a lot of mistakes, could you help me ? because i did
not find the solution.

thanks


#include mysql/mysql.h
#include stdio.h
#include stdlib.h
#include string.h
#include unistd.h
#include sys/stat.h
#include fcntl.h
#include glib.h

int main(int argc, char **argv)
{
MYSQL *mysql = NULL;
struct stat statbuf;
int file;
unsigned long size, ssize;
gchar *data = NULL, *query = NULL, *end = NULL;
int i;
mysql = (MYSQL *) g_malloc0(sizeof(MYSQL));
mysql_init(mysql);
mysql = mysql_real_connect(mysql, localhost,test, ,
test_stef, 0, NULL, 0);
file = open(photo.png, O_RDONLY);
//file = open(test_mozilla.c, O_RDONLY);
if ( !file )
g_error(Impossible d'ouvrir le fichier photo.png);
fstat(file, statbuf);
fprintf(stdout, Size of photo.png : %ld\n, statbuf.st_size);
size = statbuf.st_size;

data = (gchar *) g_malloc0(size);
if ( !data )
g_error(Impossible de charger la mémoire requise);
ssize = read(file, data, size);
if ( ssize == size )
g_message(Fichier correctement lu);
query = (gchar *) g_malloc0(2*size);
strcpy(query, INSERT INTO test VALUES();
end = query + strlen(query);
*end++ = '\'';
gchar * debut, *fin;
debut = end;
end += mysql_real_escape_string(mysql, end, data, size);
fin = end;
fprintf(stdout, Difference : %lu\n,(unsigned long) (fin - debut));
*end++ = '\'';
*end++ = ')';

/*for ( i = 0 ; i  30 ; i++ )
fprintf(stdout, %c, query[i]);*/
if ( mysql_real_query(mysql, query, (unsigned long) ( end - query )) )
{
g_error(Erreur lors de la requete d'insertion dans la DB);
}
g_free(data);   
g_free(query);
mysql_close(mysql);
return 0;
}

But when i edit the mysql database with mysqlcc utility, i don't the
complete file.

now, when i read the Blob from the database, i use this source code.

#include glib.h
#include mysql/mysql.h
#include stdio.h
#include string.h
#include stdlib.h

int main(int argc, char **argv)
{
MYSQL *mysql = NULL;
MYSQL_RES *mysql_res = NULL;
MYSQL_FIELD *mysql_field = NULL;
MYSQL_ROW *mysql_row = NULL;
gchar query[] = SELECT photo FROM test;
mysql = (MYSQL *) g_malloc(sizeof(MYSQL));
mysql_init(mysql);

if( !mysql_real_connect(mysql, localhost, test, ,
test_stef,0, NULL, 0) )
g_error(Failed to connect to database : Error : %s\n,
mysql_error(mysql));
if (mysql_real_query(mysql, query, strlen(query)))
g_error(Failed query to database : Error : %s\n,
mysql_error(mysql));

if ( !(mysql_res = mysql_store_result(mysql)) )
g_error(Failed Store Result : Error : %s\n, mysql_error(mysql));

mysql_field = mysql_fetch_field(mysql_res);
g_print(Field name : %s\n, mysql_field-name);

mysql_row = mysql_fetch_row(mysql_res);
FILE *fichier;
fichier = fopen(photo_2.png, wb);
fwrite(mysql_row[0], strlen(mysql_row[0]), 1, fichier);
fclose(fichier);
mysql_close(mysql);
g_free(mysql);
return 0;
}

Thanks

Stephane Wirtel


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php




How to insert an Image in a table with libmysqlclient and API C ?

2003-01-31 Thread Stephane Wirtel
Hi all, 

my problem is the following, it's possible to insert an image in a table
with the libmysqlclient ?
My language is C 

i'm working with GNU/Linux

Best Regards, 

Stephane Wirtel


-
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/   (the list archive)

To request this thread, e-mail [EMAIL PROTECTED]
To unsubscribe, e-mail [EMAIL PROTECTED]
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php