powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite: sqlite3_stmt - комплексный вопрос
7 сообщений из 7, страница 1 из 1
SQLite: sqlite3_stmt - комплексный вопрос
    #35527717
GlobusER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Товарищи
я sqlite только недавно начал копать, так что сильно не пинайте
Вопрос такой:
У меня есть объект sqlite3_stmt*, представляющий запрос (select). Выполняя этот запрос, я сохраняю список sqlite3_value* объектов в некую глобальную структуру. После того, как все данные получены мне стейтмент больше не нужен и я вызываю для него sqlite3_finalize. Далее я пытаюсь выгрести непосредственно значения из объектов sqlite3_value* (скажем вызываю sqlite3_text_value), но как результат получаю ассерт на этом вызове. Правильно ли я понимаю, что когда я "финализирую" стейтмент все связанные с ним объекты sqlite3_value* тоже уничтожаются? И если да - то как этого избежать (не нашел пока операции копирования для sqlite3_value*)?
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35528387
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlobusERВыполняя этот запрос, я сохраняю список sqlite3_value* объектов в некую глобальную структуру.Вот это и есть твоя ошибка. Надо сохранять не указатели на sqlite3_value, а конкретные значения. sqlite3_value имеет смысл только "здесь и сейчас". Это по существу указатель на внутреннюю структуру внутри библиотеки.
Читай эту главу: http://www.sqlite.org/capi3ref.html#sqlite3_column_blob

GlobusERПосле того, как все данные получены мне стейтмент больше не нужен и я вызываю для него sqlite3_finalize. Далее я пытаюсь выгрести непосредственно значения из объектов sqlite3_value* (скажем вызываю sqlite3_text_value), но как результат получаю ассерт на этом вызове. Правильно ли я понимаю, что когда я "финализирую" стейтмент все связанные с ним объекты sqlite3_value* тоже уничтожаются?Да, правильно. Читай ту самую главу что я показал, третий абзац.
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35536106
GlobusER
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
White Owl GlobusERВыполняя этот запрос, я сохраняю список sqlite3_value* объектов в некую глобальную структуру.Вот это и есть твоя ошибка. Надо сохранять не указатели на sqlite3_value, а конкретные значения. sqlite3_value имеет смысл только "здесь и сейчас". Это по существу указатель на внутреннюю структуру внутри библиотеки.
Читай эту главу: http://www.sqlite.org/capi3ref.html#sqlite3_column_blob

GlobusERПосле того, как все данные получены мне стейтмент больше не нужен и я вызываю для него sqlite3_finalize. Далее я пытаюсь выгрести непосредственно значения из объектов sqlite3_value* (скажем вызываю sqlite3_text_value), но как результат получаю ассерт на этом вызове. Правильно ли я понимаю, что когда я "финализирую" стейтмент все связанные с ним объекты sqlite3_value* тоже уничтожаются?Да, правильно. Читай ту самую главу что я показал, третий абзац.

Спасибо за ответ!
И сразу вопрос. Другими словами, нет сопсоба сохранить копию sqlite3_value? Просто сейчас я использую boost::any (а точнее ввел вообще промежуточную сущность) чтобы в едином виде хранить значения разных типов в моих контейнерах. Получилось довольно стройно, но мне это не очень нравится чисто с религиозной точки зрения (хотелось бы иметь в программе 1 тип для такого вида данных, а не два и постоянно заморачиваясь с переходом sqlite3_value -> boost::any)? Я просто покопал сорцы и нашел разные функции вида sqlite3VdbeMemCopy и т.п., но на них у меня ругается линкощик, говорят что unresolved external symbol.
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35537097
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GlobusERИ сразу вопрос. Другими словами, нет сопсоба сохранить копию sqlite3_value?Ну почему же, теоретически есть... Только смысла в этом нет. Ты в любом случае для реально работы с данными будешь переконвертировать sqlite3_value в char[] или int. Так какая разница будешь ты это делать сразу после прочтения данных из базы или только перед расчетами и/или отображением их пользователю?
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35537213
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
GlobusERИ сразу вопрос. Другими словами, нет сопсоба сохранить копию sqlite3_value? Просто сейчас я использую boost::any (а точнее ввел вообще промежуточную сущность) чтобы в едином виде хранить значения разных типов в моих контейнерах. Получилось довольно стройно, но мне это не очень нравится чисто с религиозной точки зрения (хотелось бы иметь в программе 1 тип для такого вида данных, а не два и постоянно заморачиваясь с переходом sqlite3_value -> boost::any)? Я просто покопал сорцы и нашел разные функции вида sqlite3VdbeMemCopy и т.п., но на них у меня ругается линкощик, говорят что unresolved external symbol.

Данные из базы стоит брать непосредственно тогда, когда они нужны и не делать слой промежуточного хранения - вы расходуете лишнюю память, выполняете лишние преобразования, пишите лишний код... Для клиент-сервера промежуточный слой зачастую имеет смысл, но для встраиваемой СУБД - явно излишен. Если нужно временное хранилище - замечательно подходит in-memory база и репликация данных в обоих направлениях выполняется стандартными sql-командами.
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35884963
tester_green
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А можно глупый вопрос не по теме: Как произвести репликацию данных между базами одними запросами. (Применительно к SQLite3)
...
Рейтинг: 0 / 0
SQLite: sqlite3_stmt - комплексный вопрос
    #35886427
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tester_greenА можно глупый вопрос не по теме: Как произвести репликацию данных между базами одними запросами. (Применительно к SQLite3)Никак.
Репликация всегда делается внешним процессом.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / SQLite [игнор отключен] [закрыт для гостей] / SQLite: sqlite3_stmt - комплексный вопрос
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]