我的工作,其具有生成一个报告,以显示给用户的视图的应用程序。 这份报告是一些东西,我需要进行过滤。 使用Qt中,我使用与QSqlTableModel其过滤能力试过SQL支持,但它似乎并没有找到视图,因为我得到的错误“无法找到表TABLE_NAME”。 如何一个模型,Qt的一个看法? 我一直没能找到专门对任何信息。
QSqlDatabase connection(Request_Connection("DB Name"));
QSqlTableModel* pStore(new QSqlTableModel(NULL, connection));
if (connect(connection))
pStore->setTable("ViewName");
如果妳有一个错误“无法找到表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中显示它。 这就是你应该怎么做。