crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> незакрывается подключение к БД после запросов
zloyGamer
  опции профиля:
сообщение 6.12.2009, 22:02
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 18.7.2009
Пользователь №: 917

Спасибо сказали: 0 раз(а)




Репутация:   0  


подскажите как поправить, или что тут может быть не так, к примеру есть простая форма с вьюхой QSqlQueryModel m_model;

  QSqlDatabase::removeDatabase( "test" );
  QSqlDatabase db = QSqlDatabase::addDatabase( "QIBASE"  , "test" );
  db.setHostName( "127.0.0.1" );
  db.setPort( 3050 );
  db.setDatabaseName( "D:\\test.FDB" );
  db.setConnectOptions( "" );
  db.setUserName( "SYSDBA" );
  db.setPassword( "masterkey" );


далее если выполнить:
  db.open();  
  //...
  db.close();

то FB вначале выдает что было 1 соединение а потом 0

а если выполнить какието операции с бд:
  db.open();  
  QSqlQuery q("SELECT * FROM ui_table",db);
  m_model.setQuery(q);
  ui->view->setModel(&m_model);
  db.close();

то FB вначале выдает что было 1 соединение а после db.close(); всеравно остается 1 соединение, но из приложения уже нельзя выполнять запросы
а если далее опять вызвать db.open(); то FB выдает что уже установлено 2 соединения, и т.д.
все соединения обрываются тока после закрытия приложения, как это можно исправить?
что можно сделать чтобы соединение корректно закрывалось?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
MoPDoBoPoT
  опции профиля:
сообщение 7.12.2009, 22:19
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Попробовать сделать также, как в доке:
{
     QSqlDatabase db = QSqlDatabase::addDatabase( "QIBASE"  , "test" );
     db.setHostName( "127.0.0.1" );
     db.setPort( 3050 );
     db.setDatabaseName( "D:\\test.FDB" );
     db.setUserName( "SYSDBA" );
     db.setPassword( "masterkey" );
     db.open();  

     QSqlQuery q("SELECT * FROM ui_table",db);
     m_model.setQuery(q);
     ui->view->setModel(&m_model);
     db.close();
}
// "db" и "q" уничтожаются при выходе из блока
QSqlDatabase::removeDatabase("test");
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
zloyGamer
  опции профиля:
сообщение 8.12.2009, 15:24
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 22
Регистрация: 18.7.2009
Пользователь №: 917

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(MoPDoBoPoT @ 7.12.2009, 22:19) *
Попробовать сделать также, как в доке:
{
     QSqlDatabase db = QSqlDatabase::addDatabase( "QIBASE"  , "test" );
     db.setHostName( "127.0.0.1" );
     db.setPort( 3050 );
     db.setDatabaseName( "D:\\test.FDB" );
     db.setUserName( "SYSDBA" );
     db.setPassword( "masterkey" );
     db.open();  

     QSqlQuery q("SELECT * FROM ui_table",db);
     m_model.setQuery(q);
     ui->view->setModel(&m_model);
     db.close();
}
// "db" и "q" уничтожаются при выходе из блока
QSqlDatabase::removeDatabase("test");


пробывал, даже более, уничтожалась сама форма с m_model, но коннект всеравно оставался пока незакровалось само приложение
видимо дело гдето в статических функциях и переменных QSqlDatabas'а
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


10 чел. читают эту тему (гостей: 10, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 5.12.2024, 0:47