Поиск:

Ответ в темуСоздание новой темы Создание опроса
> removeDatabase: connection is still in use, Почему???? не пойму 
V
    Опции темы
null56
Дата 26.3.2009, 13:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Собственно все на коде покажу
Код

        qDebug("connect");
    QSqlDatabase db;
    db = QSqlDatabase :: addDatabase("QMYSQL", "123");
    sleep(5);
    qDebug() << db.lastError().databaseText();
    qDebug("diconnect");
    QSqlDatabase :: removeDatabase("123");

Собственно отладочная печать
Код

connect
""
diconnect
QSqlDatabasePrivate::removeDatabase: connection '123' is still in use, all queries will cease to work.

Собственно вопрос, кем она используется и почему этот ворнинг появляется? и правильно ли я использую эти функции...
Моя цель использовать несколько соединений в разных потоках к одной субд с разными именами, потом по окончанию работы хочу эти соединения выгрузить...
но в данном примере даже не открываю базу  и все происходит в одном потоке в основном, но как избавиться от варнинга?
Заранее благоадрен за помощь

Добавлено @ 13:38
Есть предположение, пока объект
Код

QSqlDatabase db;

уничтожать связаннjt с ним соединение нельзя....
может вот так правильнее?
Код

QSqlDatabase * db = 0;
db = &QSqlDatabase :: addDatabase("QMYSQL", "123");
sleep(5);
qDebug() << db->lastError().databaseText();
qDebug("diconnect");
QSqlDatabase :: removeDatabase("123");


верно ли мое предположение?

Это сообщение отредактировал(а) null56 - 26.3.2009, 13:39
PM MAIL   Вверх
null56
Дата 26.3.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



!!!!!!!!!!!!!!
И еще один вопросик
почему
Код

QSqlDatabase db;
db.addDatabase("QMYSQL", "1234");

показывает вот эту ошибку
Код

"Driver not loaded"

!!!!!!!!!!!!!!
PM MAIL   Вверх
ecspertiza
Дата 26.3.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 3.11.2008
Где: г.Смоленск

Репутация: 4
Всего: 5



Цитата(null56 @  26.3.2009,  13:52 Найти цитируемый пост)
показывает вот эту ошибку

а сборка статика? или динамическая если динамическая то в файл с проектом нужно кинуть папочку sqldrivers с нужными тебе плагинами.

Это сообщение отредактировал(а) ecspertiza - 26.3.2009, 14:00


--------------------
С уважением,
мастер конфетного цеха!

онлайн компилер
залип
PM MAIL   Вверх
Acer
Дата 26.3.2009, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



А если сделать как в асистенте написанно? Пробовал?
Код

QSqlDatabase * db = 0;
{
    db = &QSqlDatabase :: addDatabase("QMYSQL", "123");
    sleep(5);
    qDebug() << db->lastError().databaseText();
    qDebug("diconnect");
}
QSqlDatabase :: removeDatabase("123");


Это сообщение отредактировал(а) Acer - 26.3.2009, 13:56
PM MAIL   Вверх
null56
Дата 26.3.2009, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Цитата(Acer @ 26.3.2009,  13:55)
А если сделать как в асистенте написанно? Пробовал?

да, прозевал... предположение оказалось верным, в разных scope должны быть, как видимо локальный объект должен удаляться
Код

 // Both "db" and "query" are destroyed because they are out of scope


Теперь со вторым, в ассистенте написано, что только статически можно соединения создавать?

Добавлено через 2 минуты и 8 секунд
Цитата(ecspertiza @ 26.3.2009,  13:55)
а сборка статика? или динамическая если динамическая то в файл с проектом нужно кинуть папочку sqldrivers с нужными тебе плагинами.

я не совсем понял.... это в проекте нужно указывать динамическая или статическая?

Это сообщение отредактировал(а) null56 - 26.3.2009, 14:02
PM MAIL   Вверх
Acer
Дата 26.3.2009, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



Цитата(null56 @ 26.3.2009,  12:52)
показывает вот эту ошибку
Код

"Driver not loaded"

Используй драйвер QODBC, либо собери как плагин драйвер для мускула.
Если использовать QODBC, то к MySQL коннектимся так:
Код

QSqlDatabase = dbo = QSqlDatabase::addDatabase( "QODBC", "connection_name" );
dbo.setDatabaseName( "DRIVER={MySQL ODBC 3.51 Driver};"
                                      "Server=YOUR_MYSQL_SERVER;Port=3306;"
                                      "Option=16384;Stmt=;Database=YOUR_MYSQL_Database;"
                                      "Uid=YOUR_MYSQL_LOGIN;Pwd=YOUR_MYSQL_PASSWORD" );


Это сообщение отредактировал(а) Acer - 26.3.2009, 14:14
PM MAIL   Вверх
null56
Дата 26.3.2009, 14:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



ну ладно, думаю проблема решена, можно темку прикрыть, а про статическую или динамическую сборки в ассистенте почитаю, только найти надо сначала...
Всем спасибо за помощь
PM MAIL   Вверх
Acer
Дата 26.3.2009, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



Цитата(null56 @ 26.3.2009,  13:34)
ну ладно, думаю проблема решена, можно темку прикрыть, а про статическую или динамическую сборки в ассистенте почитаю, только найти надо сначала...
Всем спасибо за помощь

Статическая - это когда все твои библиотеки компилируются в один исполняемый файл.(QtCore, QtGui и т.п. будут собраны в один твой <project>.exe)
Динамическая - это когда библиотеки загружаются во время исполнения программы(функции из QtCore.dll(so), QtGui.dll(so) и т.п. будут вызываться из этих библиотек при исполнении программы).
PM MAIL   Вверх
null56
Дата 26.3.2009, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 721
Регистрация: 19.3.2008

Репутация: 6
Всего: 12



Acer, спасибо, я это понимаю ) не раз нарывался на подобные вещи, меня интересует конкретно, как сказать Qt, чтобы он собрал все либы в ехешник ) это я так понял надо в проекте указывать...но я пока не нашел как
PM MAIL   Вверх
Acer
Дата 26.3.2009, 16:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 652
Регистрация: 5.9.2007
Где: UA::DN

Репутация: 15
Всего: 8



null56, надо пересобрать Qt с ключем -static
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets"
JackYF
Любитель
  • В заголовке темы в квадратных скобках обозначьте используемую вами библиотеку, например: [QT],[GTK],[wx].
  • Если вопрос актуален только для некоторой версии библиотеки, либо, если вы пользуетесь не самой последней версией, укажите это. Например: [QT4], [GTK2].
  • Все начинающие изучать Qt - не забудьте зайти сюда.
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • В вопросе укажите полную версию версию библиотеки, а также все дополнительные используемые программные пакеты.
  • Не забывайте пользоваться кнопкой "Код".
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к тематике этого раздела. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема »


 




[ Время генерации скрипта: 0.1217 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.