单击搜索按钮时,它会像这样显示表格中的第一条记录;
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'的记录,也没有显示任何内容。我如何让这些按钮按预期工作?
P.S。;我想要的是,每当点击on_next_button_clicked()
时,它应该继续显示下一条记录,直到它到达表中的最后一条记录。
答案 0 :(得分:1)
next()
只能在QSqlQuery
的一个实例上运行,但在on_search_button_clicked()
,on_next_button_clicked()
和on_previous_button_clicked()
结束时,您会丢弃QSqlQuery
的实例1}}(以及QSqlDatabase
)。
我认为您可以在int offset_ = 0
类中存储偏移变量EditEntry
然后执行类似的操作
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
}
}
}
}