Russian Qt Forum

Qt => Базы данных => Тема начата: RVZ от Сентябрь 19, 2010, 15:22



Название: Данные в QTableView после db.close
Отправлено: 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();
Заранее всем спасибо!


Название: Re: Данные в QTableView после db.close
Отправлено: kibsoft от Сентябрь 19, 2010, 17:31
С моделями никак, т.к. работает с базой, а когда соединения нет, соответственно и данных нет. Выход: сохранить нужную инфу в памяти, а потом показывать.


Название: Re: Данные в QTableView после db.close
Отправлено: RVZ от Сентябрь 19, 2010, 18:16
А есть предложения как сохранять и имеет ли смысл попытаться сделать собственную модель с реализацией сохранения


Название: Re: Данные в QTableView после db.close
Отправлено: kibsoft от Сентябрь 19, 2010, 18:29
Цитировать
и имеет ли смысл попытаться сделать собственную модель с реализацией сохранения
А тебе все равно придется ее делать, если ты хочешь в QTableView показывать..


Название: Re: Данные в QTableView после db.close
Отправлено: RVZ от Сентябрь 30, 2010, 20:21
Совсем все плохо не дорос я пока еще до своей модели и тем более что метод хранения и выборки из нее данных не знай как делать. ???
надо наверное с темой http://www.prog.org.ru/topic_14974_0.html объединятся вопросы по моему схожие.
В общем тема открыта.


Название: Re: Данные в QTableView после db.close
Отправлено: crossly от Сентябрь 30, 2010, 20:30
http://doc.libqxt.org/0.6.0/qxtsqlpackagemodel.html (http://doc.libqxt.org/0.6.0/qxtsqlpackagemodel.html)