Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Пара вопросов.
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Разработка баз данных
vankleef
Всем доброго времени суток!

Есть пара вопросов.
1) В примерах есть программы, работающие с sqlite. Но получается так, что самого сервера этой СУБД нету и таблицы создаются в оперативной памяти? Получится ли также работать с другими СУБД (в частности mysql и oracle)?
2) Есть ли какие-нибудь готовые решения для записи таблицы (из БД или qtableview) в xml файл или придется все таки выбирать селектом каждое поле и вручную записывать? Так же интересует обратная задача: из xml в БД.

Пишу программу для создания тестов, вопросы будут хранится в БД. Но для удобства думаю сделать чтото вроде автономного режима: тоесть чтобы учитель спокойно пришел домой, наваял тестов, сохранил в файл, пришел в школу и загнал их в БД.
panter_dsd
1. Только с sqlite.
2. Нет.
Iron Bug
Цитата(vankleef @ 25.10.2010, 16:09) *
Пишу программу для создания тестов, вопросы будут хранится в БД. Но для удобства думаю сделать чтото вроде автономного режима: тоесть чтобы учитель спокойно пришел домой, наваял тестов, сохранил в файл, пришел в школу и загнал их в БД.

ну так юзай sqlite - он как раз для этого и создан: сделал программу и можешь её и все созданные с её помощью файлы таскать с собой без проблем.
vankleef
когда участники будут проходить тестирование вопросы будут браться с общего сервера
Iron Bug
Цитата(vankleef @ 26.10.2010, 1:06) *
когда участники будут проходить тестирование вопросы будут браться с общего сервера

в принципе, смотря как идёт работа. SQLite умеет работать с базами по любому пути: указываешь удалённый путь до базы и вперёд. естественно, будет не очень быстро. и есть ограничение: в таком режиме, из-за реализации файловой системы, могут быть ошибки, если одновременно два или более клиентов пытаются писать в одну базу - она может грохнуться. так что такой вариант лучше использовать только для чтения.
ну а иначе действительно ставить какой-то сервер и городить экспорт-импорт вручную. либо делать экспорт полученной базы в SQL скрипт, а потом его обрабатывать и вносить в другую базу. скрипты практически совместимы. если нет особых наворотов, то можно довольно просто преобразовать скрипт для SQLite для использования в другой базе.

а вообще, есть готовые тулзы для конвертации из SQLite в MySQL и обратно. вот список, где представлены несколько вариантов таких конвертилок: http://www.sqlite.org/cvstrac/wiki?p=ConverterTools
Sokoloff
Можно использовать firebird он умеет работать и с нормальным сервером, и как embedded.
panter_dsd
Цитата(Sokoloff @ 26.10.2010, 10:21) *
Можно использовать firebird он умеет работать и с нормальным сервером, и как embedded.


Цитата
Но получается так, что самого сервера этой СУБД нету и таблицы создаются в оперативной памяти?

Разве firebird так может? :blink:
Sokoloff
Цитата(panter_dsd @ 26.10.2010, 11:56) *
Цитата(Sokoloff @ 26.10.2010, 10:21) *
Можно использовать firebird он умеет работать и с нормальным сервером, и как embedded.


Цитата
Но получается так, что самого сервера этой СУБД нету и таблицы создаются в оперативной памяти?

Разве firebird так может? :blink:


Да,
http://www.firebirdsql.org/manual/fbmetasecur-embedded.html
http://sql.ru/faq/faq_topic.aspx?fid=313

Еще у встроенной базы можно поставить флажок, что она риадонли, и, например раздавать на CD вместе с программой.


На Qt я с firebird не работал, но давно писал прогу на Delphi, но насколько понимаю на Qt все должно быть так-же.

Так вот, embeded версия библиотек может работать и с файлом и с реальным сервером, достаточно указать путь к базе как server:/path/to/base.
Т.е. можно написать программу, она по умолчанию создает однопользовательскую эмбедед базу и не требует от пользователя устанавливать сервер. А уж если пользователю понадобиться, то он ставит сервер и в конфиге прописывает путь к базе как сетевой.
Iron Bug
Цитата(Sokoloff @ 26.10.2010, 16:44) *
Так вот, embeded версия библиотек может работать и с файлом и с реальным сервером, достаточно указать путь к базе как server:/path/to/base.

дык, так и SQLite может работать. а Firebird гарантирует при сетевом доступе сохранность базы при нескольких клиентах? это же зависит от реализации файловой системы, а там полно багов.
panter_dsd
В embeded версии firebird нельзя приконнектиться к файлу БД, если он лежит в сети, даже на подключенном сетевом диске.
Sokoloff
Цитата(Iron Bug @ 26.10.2010, 14:55) *
Цитата(Sokoloff @ 26.10.2010, 16:44) *
Так вот, embeded версия библиотек может работать и с файлом и с реальным сервером, достаточно указать путь к базе как server:/path/to/base.

дык, так и SQLite может работать. а Firebird гарантирует при сетевом доступе сохранность базы при нескольких клиентах? это же зависит от реализации файловой системы, а там полно багов.


Если подключаемся как embeded, то только к локальному файлу и только монопольно. Но, зато с поддержкой процедур, триггеров и прочего.
А под сетевым доступом я имел в виду поднять полноценный Firebird SQL сервер и коннектиться к нему через SQL запросы, а не просто к расшаренному файлу.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.