Просмотр полной версии : MySQL HELP! Запись 0x00 байта
Записываю в MySQL базу из Си строку, запись идет до первого 0x00 байта, а дальше пустота... Можно-ли с этим боротся?
Joker-jar
17.01.2009, 17:55
0x00 - это ж конец строки
как?
Примерно так:
char text[] = {0x10,0x011,0x12,0x00,0x10,0x11};
MYSQL_RES * UPDATE = QUERY("base","UPDATE `user` SET text='%s' WHERE name='name'",text);
MYSQL_RES * QUERY(char * base, char * Format, ...)
{
va_list ap; // For arguments
va_start( ap, Format );
int buff_size = _vscprintf(Format,ap)+1;
char * buff = new char[buff_size];
vsprintf(buff,Format,ap);
char * queryPtr = new char[1024];
mysql_select_db(mysql,base);
sprintf(queryPtr,"use %s",base);
mysql_query(mysql,queryPtr);
sprintf(queryPtr, buff);
if (mysql_query(mysql,queryPtr))
{
va_end ( ap );
delete[] buff; delete[] queryPtr;
return 0;
}
else
{
va_end ( ap );
delete[] buff; delete[] queryPtr;
return mysql_store_result(mysql);
}
}
0x00 - это ж конец строки
Спасибо, я знаю.
Может у тебя конфликт типов данных? Т.е. ты передаешь hex-данные в текстовое поле...
Передавать пробовал по все что только можно, char, blob и т.д. Результат всегда одинаковый записывает до 0x00 и обрезает строку. Если не ошибаюсь раньше в MySQL был тип данных binary , так вот в строку типа binary(100) данные записывались нормально(т.е. вместе с 0x00), а сечас bin почему-то убрали
нуль байт запиши как char(0)
те запрос будет вида:
UPDATE `user` SET text=CONCAT('abc',char(0),'abc') WHERE name='name'
И поле text, наверно, должно иметь тип blob.
Joker-jar
17.01.2009, 18:44
Спасибо, я знаю.
В таком случае, ты спрашиваешь примерно следующее: как записать конец строки в середину строки. Используй, к примеру, blob
Всем спс, строка обрезалась ещё до отправки...
хм... возникает новый вопрос нельзяли без особого изврата отучить sprintf от "обрезания" ??
хм... возникает новый вопрос нельзяли без особого изврата отучить sprintf от "обрезания" ??
А обязательно sprintf() юзать? Можно заменить strcat() :)
strcat() тоже будет обрезать до 0x00, нада использовать memcpy
vBulletin® v3.8.14, Copyright ©2000-2026, vBulletin Solutions, Inc. Перевод: zCarot