Russian Qt Forum

Qt => Общие вопросы => Тема начата: brucemax от Февраль 27, 2013, 12:30



Название: Хранение данных
Отправлено: brucemax от Февраль 27, 2013, 12:30
Ребят, подскажите как лучше хранить данные.  Оные представляют из себя список рецептов, рецепт это набор компонент, их плотность, вес на кг продукта и источник (число).  Рецепты должны добавляться\удаляться и редактироваться.  Взгляд у меня бросается на JSON, сталкивался с ним в андроиде.  Но я так понял вcтроенного механизма для работы с ним в Qt нет, и придётся подключать библиотечку, например http://habrahabr.ru/post/147952/ (http://habrahabr.ru/post/147952/).  Или лучше разбираться с xml?


Название: Re: Хранение данных
Отправлено: GreatSnake от Февраль 27, 2013, 12:35
С каких это пор xml и json стал средством хранения динамических данных ???


Название: Re: Хранение данных
Отправлено: Bepec от Февраль 27, 2013, 12:38
Я б как энтузиаст предложил sqlite :)


Название: Re: Хранение данных
Отправлено: brucemax от Февраль 27, 2013, 12:41
С каких это пор xml и json стал средством хранения динамических данных ???
Да.. сглупил


Название: Re: Хранение данных
Отправлено: brucemax от Февраль 27, 2013, 12:42
Я б как энтуазист предложил sqlite :)
Вариант! Спасибо!


Название: Re: Хранение данных
Отправлено: panAlexey от Февраль 27, 2013, 13:37
Я б как энтузиаст предложил sqlite :)
А я бы предложил fireberd.
Что мне одному с её подключением мучиться? )))
Имелось ввиду эмбедеддд..


Название: Re: Хранение данных
Отправлено: Странник от Февраль 27, 2013, 23:51
А я бы предложил fireberd.
Что мне одному с её подключением мучиться? )))
Имелось ввиду эмбедеддд..
что там мучиться, всей любви на 15 минут. вот только средствами Qt базу Firebird создать не получится - либо тащить готовый файл, либо использовать родной API. на мой взгляд, для простых баз достаточно SQLITE - с ним мороки меньше.


Название: Re: Хранение данных
Отправлено: panAlexey от Февраль 28, 2013, 02:34
А я бы предложил fireberd.
Что мне одному с её подключением мучиться? )))
Имелось ввиду эмбедеддд..
что там мучиться, всей любви на 15 минут. вот только средствами Qt базу Firebird создать не получится - либо тащить готовый файл, либо использовать родной API. на мой взгляд, для простых баз достаточно SQLITE - с ним мороки меньше.
У маня пока не получилось собрать с эмбедед.
делал по этому мануалу (http://dou.ua/lenta/articles/get-started-with-qt-and-embedded-firebird/).


Название: Re: Хранение данных
Отправлено: Странник от Февраль 28, 2013, 12:32
У маня пока не получилось собрать с эмбедед.
делал по этому мануалу (http://dou.ua/lenta/articles/get-started-with-qt-and-embedded-firebird/).
технически, плагин собирается с полной версией. это при запуске вы можете ему вместо оригинальной библиотеки fbclient.dll версию с встроенным сервером fbembed.dll подсунуть - интерфейсы совместимы. у вас именно плагин не собирается или подключиться не удается?


Название: Re: Хранение данных
Отправлено: panAlexey от Февраль 28, 2013, 13:48
НЕ смог подключиться пока сервер не запустил.
Но мне сервак не нужен, мне нужна было именно эмбедед версия.
Я еще покопаю конечно, если что поспрашиваю.


Название: Re: Хранение данных
Отправлено: Hellraiser от Февраль 28, 2013, 14:11
Если не ошибаюсь, при использовании эмбед версии dll, поставляемую с ней, необходимо переименовать в fbclient.dll. Подключиться возможно только к локальному ресурсу, т.е. по указанию пути к базе.


Название: Re: Хранение данных
Отправлено: panAlexey от Март 01, 2013, 10:09
Если не ошибаюсь, при использовании эмбед версии dll, поставляемую с ней, необходимо переименовать в fbclient.dll. Подключиться возможно только к локальному ресурсу, т.е. по указанию пути к базе.
Мне бы хотя бы мини-проект с подключением. Пока на нашел.


Название: Re: Хранение данных
Отправлено: Hellraiser от Март 01, 2013, 11:40
Хорошо, хоть и не в тему треда, но попробую показать. Мини-проектов никаких не надо, достаточно стандартного SQLBrowser и любой базы.
Имеем Windows, MSVS2010, Qt 4.8.4 сборка для 2010 (в переменных окружения заданы QTDIR, QMAKESPEC и PATH).
1. Загружаем полный сервер firebird от разработчиков. Версию взял последнюю, под win32 (сборка для Qt win32), без установки, в зипе (ведь мне нужны только библиотеки для сборки). Чтобы не мучаться в дальнейшем, архив распаковал в C:\Firebird.
2. Запускаем Qt 4.8.4 Command Prompt, пишем следующее
Код
Bash
cd src\plugins\sqldrivers\ibase
qmake "INCLUDEPATH+=c:/firebird/include" "LIBS+=c:/firebird/lib/fbclient_ms.lib" ibase.pro
nmake debug-install
nmake release-install
3. Убеждаемся в появлении требуемых плагинов в QTDIR\plugins\sqldrivers
4. Распаковать скачанный от разрабов архив эмбеддеда (win32, zip) в папку со своей прогой (sqlbrowser). Переименовать fbembed.dll в fbclient.dll. Запускаем sqlbrowser, имя базы - полный_путь_к_базе\имя_файла_базы (если в папке с приложением, то можно .\имя_файла_базы, пользователь/пароль - SYSDBA/masterkey, хост - не указываем.
P.S. При наличии проблем с запуском, крайне рекомендуется проверить нужные библиотеки Dependency Walker`om.


Название: Re: Хранение данных
Отправлено: panAlexey от Март 02, 2013, 06:51
Спасибо. Выберу время попробую.
ПС. Пишет: "CHARACTER SET WIN1251 is not instaled Unable exec.. query".
Попробую разобраться.


Название: Re: Хранение данных
Отправлено: Странник от Март 02, 2013, 08:16
Спасибо. Выберу время попробую.
ПС. Пишет: "CHARACTER SET WIN1251 is not instaled Unable exec.. query".
Попробую разобраться.
надо думать, не находит fbintl.dll и fbintl.conf. я обычно рядом с exe создаю конфигурационный файл firebird.conf следующего содержания:
Код:
RootDirectory = dirname
в папку dirname помещаю папки intl (internationalization) и udf (user-defied functions) и файл firebird.msg (сообщения сервера) из поставки сервера. если файла firebird.conf нет, папка intl должна лежать рядом с exe.


Название: Re: Хранение данных
Отправлено: panAlexey от Март 02, 2013, 09:09
Спасибо за помощь, я только разбираюсь с FB.


Название: Re: Хранение данных
Отправлено: panAlexey от Март 02, 2013, 15:07
ц
надо думать, не находит fbintl.dll и fbintl.conf. я обычно рядом с exe создаю конфигурационный файл firebird.conf следующего содержания:
Код:
RootDirectory = dirname
в папку dirname помещаю папки intl (internationalization) и udf (user-defied functions) и файл firebird.msg (сообщения сервера) из поставки сервера. если файла firebird.conf нет, папка intl должна лежать рядом с exe.
Спасибо, помогло.
Даже пересобрал дрова на 4.7.3 под мингву с под пинка.. (ранше было 4.8.4).