【发布时间】:2012-07-18 08:24:30
【问题描述】:
我有连接到数据库的小部件:
Widget::Widget(QWidget *parent)
{
QString databaseName = "name";
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(databaseName);
db.setHostName("localhost");
if(!db.open())
qDebug()<<"ret error";
}
现在我想在小部件关闭后删除数据库连接(目前我收到如下警告:QSqlDatabasePrivate::removeDatabase: connection 'qt_sql_default_connection is still in use...)。我已经阅读了一些主题并尝试从它们中评估一些解决方案,但没有一个对我有用。我的代码:
void Widget::closeEvent(QCloseEvent *e)
{
QSqlDatabase db = QSqlDatabase::database();
QString connection = db.connectionName();
db.close();
QSqlDatabase::removeDatabase(connection);
qDebug()<<"error: "<<db.lastError().text();
}
我得到的错误是:Driver not loaded Driver not loaded
这样做的正确方法是什么?
编辑:
另一种方法:
void Widget::someMethod()
{
QSqlDatabase db = QSqlDatabase::database();
QSqlQuery query(db);
query.exec("some query");
}
【问题讨论】:
-
您的系统中安装了 sqlite 库吗?
-
是的,一切正常,我可以添加数据。调用查询并在表视图中查看。唯一的问题是关闭。 closeEvent() 中返回错误。