我是qt的新手,我没有找到一种方法来检索某个元素的行,我只知道一个字段值(例如email)。
我有一个模型(QSqlTableModel),我想知道表“person”中的记录的行是什么,电子邮件是“a@gmail.com“。QSqlQuery不返回行,我如何实现这一点?
QSqlQuery query;
query.exec(QString("SELECT * FROM person WHERE email = \"%1\";").arg("a@gmail.com"));
// the query.exec do not return rows, but I need to know it, in order to edit some (not selectable) item, using QSqlTableModel::setRecord(int row, ...) for example.
2条答案
按热度按时间cunj1qz11#
可采用不同的方法:
注意,我们假设该字段是唯一的,否则将需要返回如下的ID列表。
6uxekuva2#
从医生那里。
QSqlQuery一次提供一条记录的结果集访问。调用exec()后,QSqlQuery的内部指针位于第一条记录之前的一个位置。我们必须调用一次QSqlQuery::next()以前进到第一条记录,然后再次重复调用next()以访问其他记录,直到它返回false。下面是一个按顺序迭代所有记录的典型循环:
注意,QSqlQuery::value接受一个字段索引。字段使用SELECT语句的文本从左到右编号。
在您的示例中,字段将按照创建时的顺序排序,因为您使用
SELECT *
返回一行的所有元素。