MySQL, C ++: нужен размер Blob для чтения данных BLOB - PullRequest
1 голос
/ 24 февраля 2010

Как получить размер данных в поле BLOB в наборе результатов? (с использованием C ++ и MySQL Connector C ++)

Чтобы прочитать данные из набора результатов, я сначала выделил для них память. Чтобы выделить память, мне нужно знать размер данных BLOB-объектов в наборе результатов.

Поиск в Интернете и StackOverflow, я нашел два метода: OCTECT и BLOB-поток.

Одним из способов определения размера BLOB является использование функции OCTECT(), которая требует новый запрос и создает новый набор результатов. Я бы предпочел не использовать этот метод.

Другой метод - использовать поток больших двоичных объектов, искать до конца и получать позицию файла. Однако я не знаю, можно ли перемотать поток в начало, чтобы прочитать данные. Этот метод требует дополнительного чтения всего потока.

Интерфейсы ResultSet и ResultSetMetaData MySQL Connector C ++ 1.0.5 не предоставляют метод для получения размера данных в поле (столбце).

Существует ли процесс для получения размера данных в поле BLOB, учитывая только набор результатов и имя поля?

Я использую MySQL Connector C ++ 1.0.5, C ++, Visual Studio 2008, Windows Vista / XP и «Версия сервера: MySQL Community Server (GPL) сообщества 5.1.41».

1 Ответ

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

Вы можете сделать выбор как:

select LENGTH(content),content where id=123;

где содержимым является поле BLOB.

С уважением. см: ДЛИНА (стр.)

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