本来就是想来学习下手写分页或者自己写下分页逻辑,就当是一次练习,数据用的是sql2005,数据量是432W。

首先先感谢国家。然后在感谢csdn和群里的朋友跟我一起讨论。当然拉我知道我的做法不是最好的,但是手写一个是挺费劲的。

下面贴代码

    private SqlConnection con = new SqlConnection("Data Source=.;Initial Catalog=test;Persist Security Info=True;User ID=sa;Password=123456");protected void Page_Load(object sender, EventArgs e){//数据显示,跟分页分开操作con.Open();DataSet ds = new DataSet();int num =0;if (string.IsNullOrWhiteSpace(Request["page"]) ||Convert.ToInt32(Request["page"])<=1){num = 0;}else{num =Convert.ToInt32(Request["page"])-1;}string sql = "select top 20 id,name,sex,age from aa where id not in (select top (20*" + num + ") id from aa order by id desc) order by id desc";SqlDataAdapter da = new SqlDataAdapter(sql, con);da.Fill(ds, "0");con.Close();GridView1.DataSource = ds.Tables[0];GridView1.DataBind();}//分页处理public string pageIndex(){int num = 0;//当前页码if (string.IsNullOrWhiteSpace(Request["page"]) || Convert.ToInt32(Request["page"]) <= 1){num = 1;}else{num = Convert.ToInt32(Request["page"]) ;}//获取到数据库里面的全部数据条数,我没用存储过程用的是sql语句,有的回说存储过程效率高。//亲 我测试数据库是432W数据//亲 我查询的是一列,//亲 最重要的一点是我不会存储过程//亲 我知道这么查效率低哦!~但是我只查一次!~StringBuilder sb = new StringBuilder();con.Open();string sql = "select count(id) from aa";SqlCommand com = new SqlCommand(sql, con);int count = Convert.ToInt32(com.ExecuteScalar());con.Close();int page = 0;//页总数page = (int)Math.Ceiling((decimal) count / 20);//int from = num / 10 * 10 + 1;//起始页int from = 0;int to = 0;
     //计算极值if (from % 10 == 0){int tmp = num - 1;from = (tmp / 10) * 10 + 1;to = tmp / 10 * 10 + 11;}else{to = num / 10 * 10 + 11;//终止页from = num / 10 * 10 + 1;}if (num != 1){sb.AppendLine("<a href='?page=" + (num - 1) + "'>上一页</a>");}else{sb.AppendLine("<strong>上一页</strong>");}for (int i = from; i < to && i < page; i++){if (i == num)sb.AppendLine("<strong>"+i+"</strong>");elsesb.AppendLine("<a href='?page=" + i  + "'>" + i + "</a>");}if (to - from >= 10){sb.AppendLine("<a href='?page=" + (from + 10) + "'>...</a>");}if (num <= page){sb.AppendLine("<a href='?page=" + (num +1) + "'>下一页</a>");}return sb.ToString();

我觉得这个分页还可以优化。当然会有很多人说用存储过程啊!用分页控件啊!

恩。。好吧 但是如果只有几百条数据的时候还需要写存储过程么?如果只让用access呢?我这个速度还是可以的总数 不到1秒就全部读出来了。

希望高手能帮忙讲解下 谢谢拉 处女帖!~

转载于:https://www.cnblogs.com/minCS/archive/2011/09/30/2196441.html

手写分页 个人感觉还能优化,甚至抽象出来,需要高手讲解相关推荐

  1. ant中的table和pagination表格分页结合使用 手写分页

    表格部分 <a-table:row-selection="rowSelection" :columns="columns":data-source=&qu ...

  2. PageHelper分页插件失效的原因,PageHelper手写分页用法

    导包错误(以下是正确的) import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; PageHel ...

  3. 手写数字识别的小优化

    在用KNN实现手写数字识别的时候突发奇想是否可以根据数字的特点对其进行一个分类,以此来提高判断的准确率.经过许多天的改进与完善终于实现了此算法,就称其为洞拐法吧.(第一次写,有许多不足之处,还望多多包 ...

  4. 手写小程序摇树优化工具(三)——遍历json文件

    见素包朴,少私寡欲,绝学无忧 github: miniapp-shaking 上一章我们介绍了遍历js文件的方法,接下来我们介绍其他文件的遍历. 1. 遍历JSON文件 对于json文件,我们直接读取 ...

  5. python识别手写文字_Python3实现简单可学习的手写体识别(实例讲解)

    1.前言 版本:Python3.6.1 + PyQt5 + SQL Server 2012 以前一直觉得,机器学习.手写体识别这种程序都是很高大上很难的,直到偶然看到了这个视频,听了老师讲的思路后,瞬 ...

  6. python机器学习手写算法系列——贝叶斯优化 Bayesian Optimization

    Bayesian Optimization 贝叶斯优化在无需求导的情况下,求一个黑盒函数的全局最优解的一系列设计策略.(Wikipedia) 最优解问题 最简单的,获得最优解的方法,就是网格搜索Gri ...

  7. Python Django手写分页代码

  8. 手写MyBatis分页插件

    目录 前言 MyBatis插件 手写分页插件 总结 前言 在开发查询类的接口时,有一个让开发者比较头疼的问题:分页. 如果每次都要开发者自己去写limit,计算起始行和偏移量就太烦了,于是市面上诞生了 ...

  9. java手写一个分页的方法_java web手写实现分页功能

    现在很多流行的框架,都可以很快的把分页效果做出来,但是作为一名程序员你必须得知道手写分页的流程: 场景效果: 一.分页的思路 首先我们得知道写分页代码的思路,保持思路清晰,才能行云流水的去写代码,其实 ...

最新文章

  1. FilteredTextBoxExtender
  2. java清空字符串_java面向对象,垃圾回收机制
  3. 2018-2019-2 网络对抗技术 20165301 Exp3 免杀原理与实践
  4. mysql数据库驱动_JDBC 加载mysql数据库驱动
  5. Nboot中nand flash控制器参数TACLS、TWRPH0和TWRPH1的确定(基于K9F1208U0B)
  6. 打包指令_DD19A电动热熔打包机,更换易损件方法
  7. Java学习笔记50:JSONObject与JSONArray的使用
  8. bash资源监控_10个资源成为更好的Bash用户
  9. 中移物联网答案java_【分享】中移物联网校园招聘笔试-java
  10. 【java】求两个字符串的最长公共子串
  11. 两个有序链表序列的合并_leetcode链表之合并两个排序的链表
  12. 【转】onAttachedToWindow()在整个Activity生命周期的位置及使用
  13. endnotex9下载安装_endnote x9怎么和word关联?Word中用EndNote X9教程
  14. 初入Kaggle之数据集的使用及预测结果生成
  15. 使用html表格标签做一份简历表
  16. 前端学习之路---node.js(二)
  17. 联想微型计算机b540,联想B540一体机升级CPU 加内存
  18. 机器学习分享——反向传播算法推导
  19. eclipse注释字体大小显示不一样大
  20. Python 数据分析——Matplotlib相关知识

热门文章

  1. 【吼吼睡cocos2d学习笔记】第五章 - loading场景以及其他
  2. linux vim 多文件 查找,linux下vim多文件查找与替换教程
  3. 上传图片的表单java代码_java模拟post方式提交表单实现图片上传(示例代码)
  4. linux修改服务器时间_操作系统基础解析:Windows和Linux 到底有何不同?
  5. JavaScript垃圾回收
  6. Python机器学习:PCA与梯度上升002使用梯度上升法求解PCA问题
  7. 河北省计算机网络技术专接本考什么,河北计算机专接本考什么
  8. 门槛回归模型_stata15:门槛模型
  9. java extern的作用_学习笔记之20-static和extern关键字2-对变量的作用
  10. opboot怎么刷入固件_矿渣高性价比竞斗云系列四:竞斗云最强刷机OPBOOT1.09+128M固件刷机...