Вставьте двоичный файл std :: string с использованием ODBC в столбец BLOB - PullRequest
2 голосов
/ 12 апреля 2009

Может кто-нибудь дать мне пример того, как вставить двоичную строку std :: string, используя ODBC и C ++, в столбец BLOB, пожалуйста?

EDIT:

Дубликат Как вставить двоичный std :: string в BLOB (MySQL) .

1 Ответ

0 голосов
/ 12 апреля 2009

Если это действительно двоичная строка, и у вас есть действительные двоичные данные (например, встроенные нули), то вам нужно быть осторожным, чтобы не использовать какой-либо из членов std :: string, которые могут обрабатывать ее как строку C ( например, с завершающим нулем), поскольку вы, очевидно, в конечном итоге потеряете данные.

Класс std::string на самом деле не подходит для этой цели - он написан в предположении, что вы работаете с на самом деле строкой символов - поскольку вы используете большой двоичный объект или массив двоичных данных, a std::vector вероятно, более уместно.

Для вставки данных потребуется привязать содержимое вектора к запросу SQL с помощью параметров привязки. То есть вместо использования SQLExecDirect для выполнения строки, содержащей запрос SQL, вы должны использовать SQLPrepare для создания дескриптора оператора - вы оставляете место, где находится значение двоичного файла значение будет идти с '?', затем использовать SQLBindParameter , чтобы связать заполнитель с двоичным значением. Затем вы вызываете функцию, используя SQLExecute .

В документации SQLBindParameter есть несколько примеров кода.

...