QSqlQueryModel
当然 QSqlQueryModel也能单独取回数据,不显示。
有上面可得,得到的salary 是第4行第二列,故还以写成
是执行查询语句和横贯查询结果的高级接口,他是建立在低级的QsqlQuery 之上的,它可以直接给显示类提供数据如:QTableView
QSqlQueryModel *model = new QSqlQueryModel;
model->setQuery("SELECT name, salary FROM employee");
model->setHeaderData(0, Qt::Horizontal, tr("Name"));//显示时的表头
model->setHeaderData(1, Qt::Horizontal, tr("Salary"));
QTableView *view = new QTableView;
view->setModel(model);
view->show();
当然 QSqlQueryModel也能单独取回数据,不显示。
QSqlQueryModel model;
model.setQuery("SELECT * FROM employee");
int salary = model.record(4).value("salary").toInt();
有上面可得,得到的salary 是第4行第二列,故还以写成
int salary = model.data(model.index(4, 2)).toInt();
The model is read-only by default. To make it read-write, you must subclass it and reimplement setData() and flags(). Another option is to useQSqlTableModel, which provides a read-write model based on a single database table.
QSqlQueryModel默认情况下只能读,如果想读写必须子类化它,并重新实先setData()和flags()这两个函数
或者用QSqlTableModel类,它提供读写模式,但它是基于单一表的。
QT qtcreator 自身提供了 读写模式的范例 Query Model Example,在example 中可以看到,用户可以自定义自己想要的数据显示模式。
查询执行语句:
void QSqlQueryModel::setQuery ( const QString & query, const QSqlDatabase & db = QSqlDatabase() )
例 QSqlQueryModel model;
model.setQuery("select * from MyTable");
if (model.lastError().isValid())
qDebug() << model.lastError();
traversing穿越,通过v.横越, 穿越, 横贯( traverse的现在分词 );(爬山时)作Z形攀登
programmatically 以编程方式
snippet 1.片段