当前位置: 代码迷 >> QT开发 >> 怎么解除QSqlTableModel和Sqlite数据库的连接
  详细解决方案

怎么解除QSqlTableModel和Sqlite数据库的连接

热度:34   发布时间:2016-04-25 04:37:37.0
如何解除QSqlTableModel和Sqlite数据库的连接
现在是从数据库里查出数据,并显示到控件tableView上,我使用的是QSqlTableModel类,缩减后的代码如下:
C/C++ code
void MainWindow::SelectData(){    QString conn;    {        QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");        db.setDatabaseName("test.db");        conn=QSqlDatabase::database().connectionName();        db.open();        QSqlTableModel *model=new QSqlTableModel(this,db);        model->setTable("TestTool");        model->select();        ui->tableView->setModel(model);        ui->tableView->show();        db.close();        qDebug()<<"Congratulations~Selected Successfully~";    }    QSqlDatabase::removeDatabase(conn); }

问题来了,每次执行此方法,系统都会报:
QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection' is still in use, all queries will cease to work.

而如果不用QSqlTableModel类,却不会有这样的错误:
C/C++ code
void MainWindow::SelectData(){    QString conn;    {        QSqlDatabase db=QSqlDatabase::addDatabase("QSQLITE");        db.setDatabaseName("test.db");        conn=QSqlDatabase::database().connectionName();        db.open();        QSqlQuery q;        q.exec("select * from TestTool,TestProgram where TestTool.ToolId=TestProgram.TestId");        while(q.next())        {            ui->textEdit->append(q.value(1).toString());//append自带换行无需加'\n'        }        q.clear();        db.close();    }    QSqlDatabase::removeDatabase(conn); // correct}


原因可能出在没有解除QSqlTableModel和Sqlite数据库的连接上,小弟刚刚玩Qt,想请问下如何解除QSqlTableModel和Sqlite数据库的连接

------解决方案--------------------
支持一下
  相关解决方案