1、分页思想借鉴网友:五十一、Qt之通用数据库分页_panchang199266的博客-CSDN博客_qt数据库分页查询

2、使用sqllite数据库进行测试:创建一个测试用表student并插入100万条数据,使用事务进行插入,插入时间大概是1.6s:

        {QSqlDatabase db;db = QSqlDatabase::addDatabase("QSQLITE", "main");db.setDatabaseName("zzc.db");if(!db.open()){qDebug() << "open error" << db.lastError();}QSqlQuery query(db);QString strSql = QString("create table student (id integer primary key autoincrement,""grade int,""age int);");if(!query.exec(strSql)){qDebug() << "create table" << db.lastError();}QVariantList var_grade_list, var_age_list;query.prepare(QObject::tr("insert into student(grade, age) values(?,?)"));for (int i = 0; i < 1000000;i++) {var_age_list << QRandomGenerator::global()->bounded(10, 20);var_grade_list << QRandomGenerator::global()->bounded(60, 120);}query.addBindValue(var_grade_list);query.addBindValue(var_age_list);//使用事务,实现快速批量插入QDateTime dtStart = QDateTime::currentDateTime();db.transaction();if(!query.execBatch()){qDebug() << query.lastError();db.rollback();}db.commit();QDateTime dtEnd = QDateTime::currentDateTime();double msec = dtStart.msecsTo(dtEnd);this->ui->Time->setText(QString("插入用时 %1 秒").arg(QString::number(msec / 1000, 'f', 3)));}QSqlDatabase::removeDatabase("main");

3、 主要思路:(1)、先查询表中总的数据行数,再根据每页显示的数据行数,计算出所需要的分页的数目;(2)、通过分页查询语句(关键字:limit)来查询并显示数据;(3)、使用模型视图模式来显示查询出来的数据。

4、需要注意多线程查询时,QSqlDatabase db变量不能跨线程使用,这根QT的版本有关,我是用的是QT5.13是不能跨线程使用的,所以我在每个线程中创建一个连接,使用完后调用:QSqlDatabase::removeDatabase("main");关闭连接,如下面,【注意db的作用域】:

{QDateTime dtStart = QDateTime::currentDateTime();QSqlDatabase db;db = QSqlDatabase::addDatabase("QSQLITE", "main");db.setDatabaseName("zzc.db");if(!db.open()){qDebug() << "open error" << db.lastError();}//......SQL操作......
}
QSqlDatabase::removeDatabase("main");

代码下载:PageSelect.zip_qt分页查询-互联网文档类资源-CSDN下载

QT实例-数据库分页查询相关推荐

  1. 不同数据库分页查询的实现

    分页查询是数据库查询中经常用到的一项操作,对查询出来的结果进行分页查询可以方便浏览.那么Oracle.SQL Server.MySQL是如何实现查询的呢?本文我们就来介绍这一部分内容. 1. SQL ...

  2. oracle数据库如何写翻页_ORACLE数据库分页查询/翻页 最佳实践

    ORACLE数据库分页查询/翻页 最佳实践 一.示例数据: Select Count(*) From dba_objects ; ----------------------------------- ...

  3. ORCALE数据库分页查询

    ORCALE数据库分页查询 ORCALE数据库实现分页查询可以使用row_number()函数或者使用rownum 虚列两种方法. 第一种:利用分析函数row_number() 方法 select * ...

  4. Mysql数据库分页查询及优化

    最近遇到个数据库分页查询问题,mysql数据库分页查询默认是升序查询,就是第一页查询的是最先插入的数据,最后一页才是最新插入的数据,弄了个小的数据库表单,记录下我的操作过程,还有优化查询速度的方法. ...

  5. mysql 分页查询web_JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)...

    JavaWeb分页显示内容之分页查询的三种思路(数据库分页查询)-1.jpg (40.23 KB, 下载次数: 0) 2018-8-18 13:34 上传 在开发过程中,经常做的一件事,也是最基本的事 ...

  6. MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操作. 分页查询 在MySQL中,分页查询一般都是使用limit子句实现,limit子句声明如下: SELECT * FROM table LIMI ...

  7. mysql分页查询所有数据库_MySQL 数据库 分页查询/聚合查询

    引言 在本篇博客简单介绍一下分页查询以及聚合查询简单操做.html 分页查询 在MySQL中,分页查询通常都是使用limit子句实现,limit子句声明以下:mysql SELECT * FROM t ...

  8. 亿级数据量场景下,如何优化数据库分页查询方法?

    摘要:刷帖子翻页需要分页查询,搜索商品也需分页查询.当遇到上千万.上亿数据量,怎么快速拉取全量数据呢? 本文分享自华为云社区<大数据量性能优化之分页查询>,作者: JavaEdge. 刷帖 ...

  9. Java web访问MySql数据库分页查询

    有时候我们查询数据库表时,但是很多时候表中的记录很多,需要显示出来的话怎么办?这时可以使用分页的方法,就是指定从数据库表的什么位置开始查询显示,以及指定显示的记录数目. Mysql数据库提供了limi ...

  10. 【mySQL】mysql数据库分页查询讨论专题

    目录 一.limit分页公式.总页数公式 1 limit分页公式 2 总页数公式 二 .Mysql的三种分页方法 1 limit m,n分页语句(低效) 2 limit m语句 (有局限) 三. 查询 ...

最新文章

  1. 高阶函数-lambda表达式
  2. Java8中Lambda表达式的10个例子
  3. 操作系统实验之作业调度算法
  4. BurpSuite实例教程讲解
  5. 教你怎么修改个性开机画面
  6. 聊聊日常开发中,如何对接WebService协议?
  7. Arimo利用Alluxio的内存能力提升深度学习模型的结果效率(Time-to-Result)
  8. 深度学习总结:pytorch构建RNN和LSTM,对比原理图加深理解
  9. synchronized的基本语法
  10. IBM JVM调整– gencon GC策略
  11. python中数据类型转换原理_python的可变与不可变数据类型的原理是什么呢?
  12. Solr router 路由介绍
  13. 依赖倒置原则_设计模式之SOLID原则
  14. OPPO Find X2系列获蓝牙5.1认证:距离正式亮相又近了一步
  15. c++连接云服务器_如何简单搭建Minecraft服务器
  16. tcpdump如何判断丢包_亿级规模的高可用微服务系统,如何轻松设计?
  17. Bootstrap4颜色拾取器插件
  18. 方维直播最新版服务端网站搭建3.1--1
  19. 深度xp系统插入光盘显示上一张光盘资料解决方法
  20. (lintcode)第4题 丑数II

热门文章

  1. 港股历史行情数据 API 接口
  2. css文字加边框镂空文字_如何使用CSS创建镂空边框设计
  3. 大数据应用的发展趋势
  4. 三角函数正交性理解与Matlab分析
  5. 题目 1341. 十三号星期五
  6. Spyder5 显示器校准 色彩校准
  7. map转字符串数组中 php_php array_map()数组函数使用说明_PHP - ucfirst
  8. 『 文件操作 』HTML文件转MD文件
  9. rpm包的下载安装与使用---手把手教学
  10. 国内外常用的MD5在线解密网站