日期:2014-05-16  浏览次数:20911 次

mysql数据库分页
用C++开发一个分页查看mysql数据库中某表记录的C/S程序,很简单,就是把这个表中的数据取出来放到一个列表框里,但是,由于表中数据很多,一次可以给用户显示的记录数不能太多,所以,在这里我一次显示20条数据,使用SQL语句中的LIMIT a,b 来获取一次查询的结果中从第a条记录开始的最多b条记录,我每次最多显示20条记录,用户可以通过点击“下一页”和“前一页”按钮来取得下20条记录和前20条记录,即每次查询用的sql语句都相同,只是通过通过a+20和a-20来翻页,但是有问题:

  如果在翻页的过程中,有其他并发用户或当前用户自己删除了当前页后前面页中的几条记录,则用户翻“下一页”的时候会漏掉所删除记录个数的记录。

  这个问题实际上就是:在用户翻页的过程中,如果有某些并发操作使该查询语句的分页方式改变了,则用户翻页可能会漏掉表中一部分内容,请问这个问题该如何处置,谢谢了。


------解决方案--------------------
一种解决的方法,就是记录下来当前的最大,最小值。

如果你以 ID 排序 select * from table1 order by id limit 20

然后你记录当前这二直条记录中的第一个ID min_ID,和最后一个ID max_ID

下一页则可以用 select * from table where id > 300 order by id limit 20