Russian Qt Forum
Ноябрь 23, 2024, 20:33 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Данные в QTableView после db.close  (Прочитано 4415 раз)
RVZ
Гость
« : Сентябрь 19, 2010, 15:22 »

Всем доброго времени суток!!!
Помогите кто чем может!!!
В общем решился изучать QT, уже почти неделю изучаю пытаюсь сделать небольшую программку в основе который лежит пример с http://wiki.linuxformat.ru/index.php/LXF102:Qt4
Все дело в том что планируемый движок базы данных MS SQL2005 с очень ограниченным количеством подключений а пользователей работающих с программой в несколько раз больше по этому есть необходимость закрывать соединение с базой данных вызвав db.close с последующим удалением из списка БД QSqlDatabase::removeDatabase("QODBC");
И если это сделать то QTableView появляется пустым.
Может кто знает как оставить данные в QTableView или QSqlQueryModel после закрытия соединения с Бд

С не большой модификацией код получился такой
Код:
 #include <QtDebug>
 #include <QtGui>
 #include <QSqlDatabase>
 #include <QSqlQueryModel>
 #include <QSqlError>
 #include <QTableView>
 int main(int argc, char *argv[]){
     QApplication a(argc, argv);
     QTextCodec::setCodecForCStrings(QTextCodec::codecForLocale());

     QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
     db.setHostName("local");
     db.setDatabaseName("RC");
     db.setUserName("user");
     db.setPassword("pass");
     if(db.open()){
        EntrantListModel *EL = new EntrantListModel;
        QSqlQueryModel * model = new QSqlQueryModel(0);
        model->setQuery("SELECT UserLogin, UserRole FROM UserListID");
        model->setHeaderData(0, Qt::Horizontal, QObject::trUtf8("User"));
        model->setHeaderData(1, Qt::Horizontal, QObject::trUtf8("Role"));
        QTableView * view = new QTableView(0);
        view->setModel(model);
        view->setWindowTitle(QObject::trUtf8("UserList"));
        view->show();
        db.close();
        QSqlDatabase::removeDatabase("QODBC");
    }
return a.exec();
Заранее всем спасибо!
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #1 : Сентябрь 19, 2010, 17:31 »

С моделями никак, т.к. работает с базой, а когда соединения нет, соответственно и данных нет. Выход: сохранить нужную инфу в памяти, а потом показывать.
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
RVZ
Гость
« Ответ #2 : Сентябрь 19, 2010, 18:16 »

А есть предложения как сохранять и имеет ли смысл попытаться сделать собственную модель с реализацией сохранения
Записан
kibsoft
Хакер
*****
Offline Offline

Сообщений: 625


Просмотр профиля WWW
« Ответ #3 : Сентябрь 19, 2010, 18:29 »

Цитировать
и имеет ли смысл попытаться сделать собственную модель с реализацией сохранения
А тебе все равно придется ее делать, если ты хочешь в QTableView показывать..
Записан

http://kibsoft.ru - Download the Qt Media Encoding Library here

The apps that were written using QtMEL:
http://srecorder.com - Screen recording software
RVZ
Гость
« Ответ #4 : Сентябрь 30, 2010, 20:21 »

Совсем все плохо не дорос я пока еще до своей модели и тем более что метод хранения и выборки из нее данных не знай как делать. Непонимающий
надо наверное с темой http://www.prog.org.ru/topic_14974_0.html объединятся вопросы по моему схожие.
В общем тема открыта.
Записан
crossly
Гость
« Ответ #5 : Сентябрь 30, 2010, 20:30 »

http://doc.libqxt.org/0.6.0/qxtsqlpackagemodel.html
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 23.