crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

legat
  опции профиля:
сообщение 19.5.2011, 10:21
Сообщение #1


Студент
*

Группа: Новичок
Сообщений: 10
Регистрация: 8.8.2010
Пользователь №: 1940

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеются запросы к SQLite БД по созданию таблицы и добавления в неё бинарных данных:
const std::string CREATE_FILE = "Create table files( id integer primary key autoincrement, file blob );";
const std::string ADD_FILE = "Insert into files( file ) values( '%s' ); Select last_insert_rowid( );";


Сам запрос я формирую в строке str следующим образом:
std::string str;
sprintf( ( char * )str.c_str( ), ADD_FILE.c_str( ), blobData );
executeSQL( str );


Вопрос:
Как мне передать в строку бинарные данные, которые могут содержать \0 и прочие служебные символы в середине, чтобы не было потери данных.
blobData предположительно char *. Не могу пока найти, что использовать для бинарных данным в строке формата вместо %s.

Можно, конечно, передавать в строку в цикле побайтово из blobData. Но это слишком не эффективно. К тому же не ясно, что делать с \0-ми.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
Litkevich Yuriy
  опции профиля:
сообщение 20.5.2011, 17:04
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(legat @ 20.5.2011, 12:25) *
В терминах С++
Цитата(Litkevich Yuriy @ 19.5.2011, 16:59) *
Отвлечёмся от программирования на Си\Си++. Оставим один SQL.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 23.6.2025, 3:27