Проблема хранения буферного символа в MySQL varchar с использованием C - PullRequest
1 голос
/ 19 февраля 2010

У меня есть закодированный символьный буферный массив размером 512 в C и поле базы данных varchar в MySQL. Возможно ли сохранить закодированный символьный буфер в varchar?

Я пробовал это, но проблема, с которой я сталкиваюсь, заключается в том, что он только сохраняет ограниченную область буфера в базе данных и игнорирует. Какова реальная проблема, и как я могу решить эту проблему?

Ответы [ 2 ]

3 голосов
/ 22 февраля 2010

Непонятно, что вы подразумеваете под кодированием.

Если вы имеете в виду, что у вас есть произвольная строка байтовых значений, тогда varchar плохо подходит, потому что он попытается обрезать завершающие пробелы. В таких случаях лучшим выбором будет использование полей varbinary.

Если вставляемая строка содержит управляющие символы, вам лучше всего преобразовать ее в шестнадцатеричную строку и вставить ее следующим образом:

create table xx ( 
    v varbinary(512) not null );

insert into xx values ( 0x68656C6C6F20776F726C64);

Это предотвратит засорение любых компонентов в цепочке инструментов символами NUL и т. Д.

0 голосов
/ 19 февраля 2010

Какой размер объявлен для таблицы varchar?

Часто поля varchar устанавливаются в 255 байтов, а не в символы. Начиная с MySQL 5.0.3 вы можете иметь более длинные поля varchar.

Похоже, вам нужно поле varchar (512), это то, что у вас есть?

См. http://dev.mysql.com/doc/refman/5.0/en/char.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...