sách gpt4 ai đã đi

c++ - QSqlQuery 中的 next() 返回表中的最后一条记录

In lại 作者:行者123 更新时间:2023-11-28 06:17:30 30 4
mua khóa gpt4 Nike

当点击搜索按钮时,它会显示表格中的第一条记录;

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() 时,它应该继续显示下一条记录,直到到达表中的最后一条记录。

1 Câu trả lời

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/

30 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com