QSqlTableModel的使用来显示SQL视图(Using QSqlTableModel to

2019-09-19 16:06发布

我的工作,其具有生成一个报告,以显示给用户的视图的应用程序。 这份报告是一些东西,我需要进行过滤。 使用Qt中,我使用与QSqlTableModel其过滤能力试过SQL支持,但它似乎并没有找到视图,因为我得到的错误“无法找到表TABLE_NAME”。 如何一个模型,Qt的一个看法? 我一直没能找到专门对任何信息。

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

if (connect(connection))
    pStore->setTable("ViewName");

Answer 1:

如果妳有一个错误“无法找到表TABLE_NAME”它只是意味着你正在试图从非现有表中的数据。 检查你的数据库。

编辑

好吧,这很奇怪什么ü做了。 它应该更多的是这样的:

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();

这个简单的例子将加载“名称”和从“雇员”表薪酬'列,将在“查看” QTableView中显示它。 这就是你应该怎么做。



Answer 2:

我的建议:

  1. 检查你的数据库名称。
  2. 我发现这个网站有助于理解与QSqlTableModel更好http://harmattan-dev.nokia.com/docs/library/html/qt4/qsqltablemodel.html


文章来源: Using QSqlTableModel to display an SQL view