C++ 使用QSqlTableModel显示SQL视图

C++ 使用QSqlTableModel显示SQL视图,c++,database,qt,model-view-controller,C++,Database,Qt,Model View Controller,我正在开发一个应用程序,它有一个视图,可以生成一个报告显示给用户。这份报告是我需要过滤的。在Qt中使用SQL支持,我尝试使用QSqlTableModel及其过滤功能,但它似乎找不到视图,因为我遇到错误“找不到表名”。如何在Qt中为视图建模?我还没有找到任何具体的信息 QSqlDatabase connection(Request_Connection("DB Name")); QSqlTableModel* pStore(new QSqlTableModel(NULL, connection))

我正在开发一个应用程序,它有一个视图,可以生成一个报告显示给用户。这份报告是我需要过滤的。在Qt中使用SQL支持,我尝试使用QSqlTableModel及其过滤功能,但它似乎找不到视图,因为我遇到错误“找不到表名”。如何在Qt中为视图建模?我还没有找到任何具体的信息

QSqlDatabase connection(Request_Connection("DB Name"));
QSqlTableModel* pStore(new QSqlTableModel(NULL, connection));

if (connect(connection))
    pStore->setTable("ViewName");
如果出现错误“找不到表名”,则表示您正试图从不存在的表中获取数据。检查你的数据库

编辑

好吧,你这么做真奇怪。它应该更像这样:

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setDatabaseName("customdb");
db.setUserName("root");
db.setPassword("root");
if(!db.open())
    QMessageBox::information(this, "Error", "Couldn't open database!");
这是针对开放数据库的。在第一个引号中,您使用了一个sql名称。您可以找到所有可用的sql插件。当您连接到数据库时,可以读取一些数据。如果要为此使用QSqlTableModel,可以通过以下方式执行:

QSqlTableModel *model = new QSqlTableModel(parentObject, db);
model->setTable("employee");
model->setEditStrategy(QSqlTableModel::OnManualSubmit);
model->select();
model->setHeaderData(0, Qt::Horizontal, tr("Name"));
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));

QTableView *view = new QTableView;
view->setModel(model);
view->hideColumn(0); // don't show the ID
view->show();
这个简单的示例将从“employee”表中加载“Name”和“Salary”列,并将其显示在“view”QTableView中。你应该这样做。

我的建议:

  • 检查您的数据库名称
  • 我发现这个网站有助于更好地理解QSqlTableModel

  • 我做的第一件事是确保连接到正确的数据库。我是,因为之前的同一个连接检索到的查找键对于视图来说很好。编辑了我的答案,现在就试试:)奇怪之处在于宏包装了一个添加/返回当前数据库和一个连接到各种数据库的函数。我继承了一个“有趣”的数据库设计。我在代码中添加了EditStrategy,现在它可以工作了。谢谢