首页| 论坛| 消息

标题:Qt编写安防视频监控系统56-数据库分页
作者:liudianwu
日期:2021-08-09 08:38
内容:

## 一、前言
在视频监控系统中也需要对日志记录进行查询显示,有时候查询到的记录并不能一页显示完,最好的做成翻页显示,如果所有记录都在一页显示通过滚动条查看,不是很符合用户习惯,比如搜索引擎的记录也都是分页显示,一页显示十几条记录。数据库的分页算法,大部分人都会选择用select查询结果limit关键字来过滤结果,其实未必所有数据库都支持limit关键字,对应Qt应用程序最常用的sqlite+mysql数据库都是用limit关键字以外,比如sqlserver数据库采用offset 4 rows fetch next 5 rows only这种写法来分页,PostgreSQL和人大金仓数据库kingbase采用的是limit+offset两个关键字组合(为何国产的人大金仓数据库和开源的PostgreSQL机制一样?后面查阅了资料才发现这家伙就是PostgreSQL改的), 而oracle的分页就更加复杂了(暂时没有找到好办法,就这个数据库分页最不好弄)。
数据库分页查询还算是比较基础的东西,一般人都会,稍微难的是对应UI上面有个分页控件,可以单击页码直接跳转到对应页码的数据显示,也可以直接输入页码,还可以单击上一页、下一页、第一页、末一页几个按钮切换,这个切换算法就有点讲究了,本人研究了网上各种翻页展示控件,大致可以总结为以下几点:
### (一)翻页功能总结
- 到了首页要禁用上一页第一页按钮,到了末页要禁用下一页和末一页按钮。
- 如果记录数不够到页码数,则对应按钮禁用,比如只有1页记录则默认的翻页切换和2/3/4等按钮处于禁用状态。
- 页码按钮的页码显示动态改变,保持中间按钮页码处于当前页码。
- 页码标识的动态改变,直到开始页码已经显示了1/2或者末尾已经到了总页码。
- 页码切换控件可以居中或者左对齐右对齐显示。
- 页码样式可以改变,方块形状、圆形、不同的颜色等。
根据以上归纳总结,特意将分页功能拆分成一个类,专门负责分页查询返回数据等,将分页按钮展示UI拆分成一个类,负责外观展示,这样更灵活,类似MVC模式,分页功能类查询后触发对应的信号通知UI改变页码,分页按钮切换后发出对应的信号通知分页功能类执行对应的操作,完美搭配干活不累。

### (二)通用翻页类
1. 可设置每页多少行记录,自动按照设定的值进行分页。
2. 可设置要查询的表名、字段集合、条件语句、排序语句。
3. 可设置第一页、上一页、下一页、末一页、翻页按钮。
4. 可设置当前页、总页数、总记录数、每页记录数、查询用时标签页。
5. 多线程查询总记录数,数据量巨大时候不会卡主界面。
6. 建 ..


#1 [九重水 08-09 08:59]
这么早来一篇?早起的鸟儿有虫吃!
#2 [305750665 08-10 08:48]
刘总一如既往的奋斗

回复 发表
主题 版块