首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

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

2012-08-01 
如何解除QSqlTableModel和Sqlite数据库的连接现在是从数据库里查出数据,并显示到控件tableView上,我使用的

如何解除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数据库的连接

[解决办法]
支持一下

热点排行