以前,觉得winform程序分页很无趣,也没实际意义,直到近期的项目实践中让我认识到原来winform数据列表分页也是非常有必要的,因为由于数据量过大的情况,当窗体在初始加载数据的时候如果不做条件的限制就会是程序假死状态,甚至直接崩溃,那么问题来了,究竟如何做才能达到性能上的优化呢,下面具体讲解实现思路,当然做法不一,如果有大佬有更好的实现方法,还望不吝赐教。

就以Orcle数据库为例,近期的项目数据库运用Oracle数据库,数据量达到百万级别的,也查找了一些数据性能优化的方法,可是还是不能根本解决问题,最后认真思索一番,认为如果数据批量请求不就可以达到目的了吗,后来查询了一系列关于Oralce数据库的分页方法,最终整合了一下达到分页的效果,具体见如下代码:

  public DataTable InstockInfo(int pagesize, int pagenum)
{
int startnum = pagesize * pagenum - (pagesize - 1);
int endnum = pagesize * pagenum;
string sql = @" SELECT * FROM (SELECT tab.*,ROWNUM AS CON FROM ( SELECT INSTOCK_ORDER_NO AS ORDER_NO,(SELECT NAME FROM t_auth_organization WHERE ID=DEPT_ID) AS WH_NAME,INVOICE_NO,PACKAGE_NO AS TRANS_ORDER_NO,(SELECT SUM(BUY_NUM) FROM T_BUSIS_INSTOCK_DETAIL WHERE INSTOCK_ORDER_NO=INS.INSTOCK_ORDER_NO) AS BUY_NUM,SUP_ACCT_CODE,(CASE INSTOCK_STATUS WHEN '0' THEN '未验货' WHEN'1' THEN '已验货' WHEN '2' THEN '已入库' ELSE NULL END)AS STATUS,CREATEBY_NAME AS CREATE_NAME, CREATE_TIME ,(CASE CHECK_STATUS WHEN '0' THEN '否' WHEN '1' THEN '是' ELSE NULL END )AS CHECK_STATUS,DEPT_ID, ZN_CODE,(CASE BILL_SOURCE WHEN '1' THEN '同步' WHEN'2' THEN 'PC自建' WHEN '3' THEN 'PDA自建'WHEN '4' THEN '扣现货' ELSE NULL END) AS BILL_SOURCE,SUP_ACCT_ID FROM T_BUSIS_INSTOCK INS WHERE INSTOCK_TYPE='2' AND INSTOCK_STATUS!='2' ORDER BY CREATE_TIME DESC ) tab WHERE ROWNUM <=" + endnum + ") WHERE CON >="+ startnum + "";
return OracleHelper.ExecuteDataTable(sql);
}

  

可以看到,当初始加载数据的时候,需要传入页码,每页显示数据量两个参数即可,这样就达到了我们在初次加载数据的时候快速的处理数据。同理,SqlServer数据库的处理方式应该也大致类似,这里就不做多的解释了,就留给机智的你去实现了,哈哈O(∩_∩)O哈哈~

最新文章

  1. Retrofit结合RxJava使用指南
  2. mybatis配置文件的bug
  3. ubuntu 安装 GCC
  4. html5+ 获取当前设备的加速度信息
  5. Ubuntu Eclipse的Tomcat小问题:不能输入server name,不能启动tomcat
  6. C标准函数库中获取时间与日期、对时间与日期数据操作及格式化
  7. mysql常用的函数
  8. git bash 连接github并提交项目工程
  9. 十大经典排序算法详细总结(含JAVA代码实现)
  10. Http协议常见状态码
  11. leetcode题解 5. Longest Palindromic Substring
  12. web service &amp;&amp; WCF 学习小结
  13. linux 几个命令
  14. 【Python全栈-后端开发】Django入门基础
  15. #define a int[10]与 typedef int a[10]用法
  16. windows server 2008/2012安装PostgreSQL过程及问题总结
  17. LA 3295 数三角形
  18. 编写高质量代码改善C#程序的157个建议——建议71:区分异步和多线程应用场景
  19. 课时60.CSS的固定格式(掌握)
  20. HTTP协议—HTTP响应头和请求头

热门文章

  1. ST40 自制 JTAG 适配器
  2. BootStrap教程完整版
  3. [Python] Codecombat 攻略 Sarven 沙漠 (1-43关)截止至30关
  4. 基于Hadoop(M/R)的MySQL到Oracle海量数据切割
  5. MongoDB自动增长
  6. LeetCode 108. Convert Sorted Array to Binary Search Tree (有序数组转化为二叉搜索树)
  7. Python实现网站注册验证码生成类
  8. 通过Struts了解MVC框架,兼说如何在面试中利用Struts证明自己
  9. Spring-SpringMVC-Mybatis整合的步骤
  10. oracle实用基础