LINUX.ORG.RU

MySQL: BLOBs from C-Interface


0

0

Здравствуйте! К сожалению, мне не известен "правильный" или хотябы наиболее распространенный/общий метод работы с бинарными объектами. Мне нужно реализовать нечто похожее на int add_blob(void *buffer, uint buffer_length); На данном этапе это работает с помощью mysql_query(...,"INSERT INTO ... (buffer)"); а буфер кодируется base64, чтобы исключить недопустимые символы. Нельзя ли придумать что-нибудь поумнее? С уважением, Роман.

anonymous

2Aleks IZA

Unfortunatly, mysql_real_query doesn't work even with apostrophe.
Try to imagine :

...

extern uint buffer_length;
extern unsigned char *buffer;

uint cmd_length;
char *cmd_buffer = new char[buffer_length + 100];

sprintf(cmd_line, "insert into my_base (length, data)
values('%d', '", buffer_length);

cmd_length = strlen(cmd_buffer);

memcpy(cmd_buffer+cmd_length, buffer, buffer_length); // BLOB
memcpy(cmd_buffer+cmd_length+buffer_length, "')", 3);

mysql_real_query(mysql, cmd_buffer, cmd_length+3);

...

Never works.
If there (in buffer) would be one or more unallowed characters
(like slash or apostrophe or something else) then nothing will works.

But anyway, if you still want to help and have working sample,
send it please to my e-mail address: smirnov@dresearch.de

Best regards,
Roman

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.