- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
当点击搜索按钮时,它会显示表格中的第一条记录;
void EditEntry::on_search_button_clicked() {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
bool ok = db.open();
if (ok) {
QSqlQuery query1("SELECT * FROM table_name WHERE last_name LIKE '%Nana%'");
if (query1.first()) {
//show first record in the table where last name like Nana
}
}
我试图通过单击这样的按钮使查询移动到表中的下一条记录;
void EditEntry::on_next_button_clicked() {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
bool ok = db.open();
if (ok) {
QSqlQuery query1("SELECT * FROM table_name WHERE last_name LIKE '%Nana%'");
if (query1.isActive()) {
while (query1.next()) {
//show the next record in the table with last name like Nana
}
}
并且像这样显示之前名字为'Nana'的记录;
void EditEntry::on_previous_button_clicked() {
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
bool ok = db.open();
if (ok) {
QSqlQuery query1("SELECT * FROM table_name WHERE last_name LIKE '%Nana%'");
if (query1.isActive()) {
while (query1.previous()) {
//show previous record in the table where last name like Nana
}
}
on_search_button_clicked()
可以很好地显示姓氏为“Nana”的第一条记录。 on_next_button_clicked()
显示表中名称为“Nana”的最后一条记录,而不是第一条之后的下一条记录(该表有 3 条姓氏为“Nana”的记录)。 on_previous_button_clicked()
按钮根本不起作用,即使我希望它显示姓氏如“Nana”的上一条记录,它也不会显示任何内容。如何让这些按钮按预期工作?
附言;我想要的是,每当单击 on_next_button_clicked()
时,它应该继续显示下一条记录,直到到达表中的最后一条记录。
最佳答案
next()
只能在 QSqlQuery
的一个实例上工作,但在 on_search_button_clicked()
结束时,on_next_button_clicked()
和 on_previous_button_clicked()
您丢弃了 QSqlQuery
的实例(以及 QSqlDatabase
)。
我想你可以在 EditEntry
类中存储一个偏移变量 int offset_ = 0
然后做类似的事情
void EditEntry::on_next_button_clicked() {
offset_ += 1;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
bool ok = db.open();
if (ok) {
QString sql = QString("SELECT * FROM table_name WHERE last_name LIKE '%Nana%' LIMIT ") + QString::number(offset_) + QString(", 1");
QSqlQuery query1(sql);
if (query1.isActive()) {
while (query1.first()) {
//show the next record in the table with last name like Nana
}
}
}
}
还有一个:
void EditEntry::on_previous_button_clicked() {
offset_ -= 1;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("database.db");
bool ok = db.open();
if (ok) {
QString sql = QString("SELECT * FROM table_name WHERE last_name LIKE '%Nana%' LIMIT ") + QString::number(offset_) + QString(", 1");
QSqlQuery query1(sql);
if (query1.isActive()) {
while (query1.first()) {
//show the next record in the table with last name like Nana
}
}
}
}
关于c++ - QSqlQuery 中的 next() 返回表中的最后一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29972913/
我正在检查我创建的应用程序的内存使用情况。它进行多次调用以从数据库 (SQLite 3) 读取和写入值。我观察到以下内容: QSqlQuery::exec() 使用一些 KB 的 RAM 来执行给定的
文档在这个主题上有点含糊: 来自 void QSqlQuery::clear() : Clears the result set and releases any resources held by
我有很多 C++11 线程在运行,它们有时都需要数据库访问。在主要我做初始化数据库连接并打开数据库。 Qt 文档说查询不是线程安全的,所以我使用全局互斥锁,直到 QSqlQuery 存在于线程中。 这
我正在尝试从数据库中检索用户,他们的名字是 'DOMAIN\name'。 我已经在 sql 控制台中检查了查询,简单的选择如下: select * from users where name='DOM
SHA256 sha256; std::string s = sha256(pass.toStdString()); QString myquery = "declare @identifier nv
我正在尝试将一个字符插入到表格的列中。而是插入字符的十进制代码。如何插入字符? 详细信息: QString insertSql; insertSql .append("INSERT INTO
QMake 版本 3.0 Qt 版本 5.0.2 使用时 QSqlQuery query(QString("SELECT device_text_id FROM device")); qDebug()
我尝试用 Qt 创建一个 SQLite 数据库,我做到了!!我将我的数据库命名为“prova_db”,它包含下表: marker_db id site (columns) 0 www
我有自己的数据存储机制来存储数据。但我想为最终用户实现标准的数据操作和查询接口(interface),所以我认为 QT sql 适合我的情况。但我仍然不明白如何将索引用于 sql 查询。比方说,我有包
如何取消长时间运行的QSqlQuery? 数据库正在返回超过 300 万行,并且显示在 QTableView 控件中。我希望能够强制停止这两个长时间操作: 当数据库正在运行一个长时间的操作时 如果数据
正在关注 QSqlQuery Class documentation可以在 MySQL 数据库中实现插入操作,即像这样: QSqlQuery query; query.prepare("INSERT
当运行下面的代码时,Windows 中的结果是 'אבגדה' 和 '??????'在Linux上,似乎qry.value(0)(一种 QVarient 类型)使用默认编码。在 Linux 中,我在驱
我使用 PyQt4.QtSql.QSqlQuery。我从表单中获取值并想将它们插入到数据库中。我打开一个连接并尝试添加,但数据库中没有值,也没有错误。有什么问题? db = QSql
我正在尝试选择我的日期库的一个字段,代码是: if (db.db().isOpen()) { qDebug() << "OK"; QSqlQuery query("SELECT state F
出于测试目的,我试图在实际运行之前从 QSqlQuery 对象中获取准备好的语句字符串。 我检查了 lastQuery() 和 executedQuery() 方法,但它们都不起作用。 void fo
我最近才发现 gmock,现在正在“重新思考整个编程过程”,尽可能地添加单元测试。在此过程中让我感到奇怪的一件事是 QSql 模块显然是我们代码的外部依赖项,并没有为开发人员提供模拟其内部的工具。对于
我正在尝试使用此代码使用 qt 进行删除: int jobId = 655; query.prepare("DELETE FROM jobs WHERE jobId = '" + QString::n
我在 Qt 的 sqlite 数据库中看到莫名其妙的缓慢行为。下面代码中的查询,当从同一数据库上的 sqlite 命令行实用程序执行时,会立即完成。 qDebug() textFormIds; if
我想实现一种方法,该方法将在退出程序时检查搜索具有 localhost ip 地址的条目并删除这些行。 问题是,我不确定如何在 Qt 中执行此操作,当我搜索时,我真的找不到任何具体的东西。有没有办法在
我正在使用带有 Qt 提供程序的 firebird 嵌入式数据库。为了使用数据库,我使用 qsqlquery::exec() 函数。这个函数是同步的还是异步的? 最佳答案 QSqlQuery::exe
我是一名优秀的程序员,十分优秀!