qsqlQuery 中的 next() 返回表中的最后一条记录
next() in QSqlQuery returns the last record in the table
单击搜索按钮时,它会像这样显示表中的第一条记录;
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
}
}
并像这样显示名称为"娜娜"的上一张记录;
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()
通过显示姓氏(如"娜娜")的第一条记录来很好地工作。on_next_button_clicked()
显示表中名称为"Nana"的最后一条记录,而不是第 1 条之后的下一条记录(表中有 3 条姓氏为"Nana"的记录)。on_previous_button_clicked()
按钮根本不起作用,即使我希望它显示姓氏(如"娜娜")的上一条记录,它也不会显示任何内容。如何让这些按钮按预期工作?
附言:我想要的是,每当单击on_next_button_clicked()
时,它应该继续显示下一条记录,直到到达表中的最后一条记录。
next()
只能处理QSqlQuery
的一个实例,但在on_search_button_clicked()
结束时,on_next_button_clicked()
和on_previous_button_clicked()
丢弃QSqlQuery
的实例(以及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
}
}
}
}
相关文章:
- 如何在最后一步使用CryptDecrypt解决NTE_BAD_DATA
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 如何检测是否在缓冲绘画动画中绘制最后一帧?
- 斐波那契数列部分和的最后一位数字
- std::ifstream 在读取文件中最后一项时设置 eofbit,但仅在读取数值类型时发生
- 将第 n 个斐波那契数的大斐波那契数的最后一位编程.C++
- 经过最后一个数组元素末尾的指针是否应该等于超过整个数组末尾的指针?
- 如何在 Win32 中用一条线连接 2 个文本框?
- foor 循环的最后一次迭代中的指针更改
- 访问类成员向量最后一项的正确方法
- C++ 如何在同一行中和在一条线上?
- 从函数参数包中删除最后一项
- 如何在SDL2窗口上使用Cairo绘制一条白色直线
- 为什么当 while 循环中的 if 条件变为 false 时,我的函数不输出最后一条语句?
- 为什么 fstream 打印出文件的最后一条记录
- 为什么 protobuf 只读取最后一条消息作为输入结果
- qsqlQuery 中的 next() 返回表中的最后一条记录
- 在QGraphicsView上的第一个和最后一个QPoint之间绘制一条线
- 应该删除必须是析构函数中的最后一条语句
- 如何确保在关闭连接之前成功发布最后一条AMQP消息