Russian Qt Forum

Qt => Базы данных => Тема начата: break от Май 04, 2009, 21:28



Название: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: break от Май 04, 2009, 21:28
Драйвер IBASE
Требуется получить число активных соединений у БД - для предотвращения обновления БД - если подключены другие пользователи... Предполагаю что в Qt нет средств для такой проверки - тогда какр решать?


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: Rcus от Май 04, 2009, 21:57
А субд Interbase или все-таки Firebird? у FB 2.1 есть специальная служебная таблица для этого, а так есть services api и доступ к нативному дескриптору подключения в QSqlDriver


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: break от Май 04, 2009, 22:25
Firebird 2.0 - ODS 11 - могу конечно перейти и на 2.1 - просто в репозитории ubuntu его не бьло на момент когда БД понадобилось использовать...(как называется служебная таблица - этот вариант вполне подойдет --- MON$ATTACHMENTS ?? )
Появился еще вопрос ведь нельзя создать Базу средствами Qt (в ситуации обновления БД с нуля)? Прийдется иметь пустую болванку и на нее накатывать скрипт?


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: ритт от Май 05, 2009, 00:27
create table отменили?


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: break от Май 05, 2009, 00:42
create database? (просто не уверен что будет работать)

Да и собственно с чего бы этому сработать - я могу выполнить запрос через SqlQuery - которое будет работать только при установленном соединении с БД...


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: ритт от Май 05, 2009, 05:22
хз, под мускулем вроде сработает...

а почему не получится соединиться? птиц встроенный?
/* не знаю позволяет ли суперсервер соединяться без указания базы - я не знаток пернатых */


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: lit-uriy от Май 05, 2009, 06:34
>>create database? (просто не уверен что будет работать)
А ты проверь, запусти демку demo/sqlbrowser, соеденись с БД и в поле запроса введи:
Код:
CREATE TABLE RRRTABLE(
  F_ID Integer NOT NULL,
  F_EN Varchar(100),
  F_RU Varchar(100)
);
у меня даже через драйвер QODBC работает


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: lit-uriy от Май 05, 2009, 06:38
а-а-а, пардон, создание БД-то так не прокатит.

break, тут вариантов не густо получается:
1) Использовать библиотеку IBPP (http://www.ibpp.org)
2) Использовать драйвер qtfirebirdibppsqldriver (http://code.google.com/p/qtfirebirdibppsqldriver/) (на основе IBPP), который тут на форуме обсуждался (http://www.prog.org.ru/index.php?topic=8509), если конечно он такое позволяет.
3) тоскать с собой пустую БД


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: Tonal от Май 05, 2009, 07:12
Таскать пустую вполне удобно, я так делал, но не прокатит для многопользовательского варианта - доступа к серверу может просто не быть.

CREATE TABLE должно прокатывать - что ему мешает?

Создавать базу похоже через сервис-апи.

Для эксклюзивной работы с базой (изменения структур, например) есть специальный режим shutdown-а. Он выставляется либо утилитой gfix, либо через сервис-апи.


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: break от Май 05, 2009, 11:10
Пока остановлюсь на таскание с собой пустой базы (GBAK с минимумом метаданных), тем  более что в текущей задаче пользователю редко прийдется создавать БД. И накатывание на нее полного скрипта обновления (до последней версии) в случае восстановления из этой болванки. Там вообще то уже сделал автоматом чтобы программа проверяла версию БД и Программы и с нужного места накатывала скрипт - другие варианты не хочется трогать т.к. хочу остаться независимым от платформы - программа работает в Linux и Windows.
Все спасибо - буду смотреть хитрый Qt Драйвер.


Название: Re: Можно ли получить информацию о количестве активных соединений с БД
Отправлено: break от Май 24, 2009, 01:37
Все решил с переходом на FB2.1 - там действительно есть таблица RDB$ATTACHMENTS содержащая инфу о текущих соединениях с этой БД