如何更新QSqlTableModel后,数据库连接已更改更改

How to update QSqlTableModel after database connection has been changed changed

本文关键字:数据库连接 QSqlTableModel 何更新 更新      更新时间:2023-10-16

我有一个派生自QSqlRelationalTableModel的类。我使用SQLite数据库。我需要改变数据库文件。我关闭旧的数据库文件,调用SetDatabaseName("新文件的路径")并打开新的数据库文件。现在我只是为模型调用select(),但它返回false。如果我调用setTable("table"),只有在select()之后,一切工作…但是表的名称是相同的…

我没有找到任何方法允许通知模型数据库连接已更改....你知道更好的告知模型的方法吗?


Ok。我再次回到这个话题。

更改db后,我必须使用相同的表名调用setTable()来重新构建表模型。我没有找到更好的方法来重建表视图,我调用

pTableView->setModel(NULL);
pTableView->setModel(model);

这会产生很多不必要的代码调用,但在其他情况下,表视图不知道表模型的变化(例如列数)。

我没有找到更好的方法来重新初始化QSqlTableModelQTableView。一些想法?

// create your model(parent=0, QSqlDatabase::database());
// set your table model->setTable("tablename");
tableview->setModel(this->model)
bool ok = model->select() // model should populate itself and refresh tableView as well

那是我的错。在源代码的帮助下,我发现在哪些情况下select()返回false。并且我的新数据库表中的一个字段名缺少一个字母:(因此,QSqlQuery与select返回错误。setTable调用更新表的字段名,因此select返回true。