大多数人应该用过sqlserver企业管理器吧,在那里面打开一个有六百万条记录的表,是无延迟打开,仔细研究了一下它打开的方式,
原来它只显示当前界面高度/每行高度的记录数,当用鼠标滚轮向下或向上滚动时它又重新加载正好够界面看到的数据量,这样就不行一次加载很多数据,也能保证加载数据的效率。
用jtable能不能也做到这样加载数据?
当用鼠标拖动滚动条向下时怎么定位在鼠标松开后周围的数据?
上下滚动时应该要从数据库里读出数据来,如果把数据都缓存到本地,再通过上下滚动读取出来,会很容易造成内存溢出,
网上有没有这样做的例子?

解决方案 »

  1.   

    建议 Jtable 做分页处理
      

  2.   

    滚轮上下滚动操作 去查询数据库,这个实现起来肯定是没问题,但是考虑到实际操作,很不严谨,
    你是在自己琢磨东西吧 ?
    公司的项目应该不会有这种需求吧,
    PS:从来没想过为了酷去改swing界面的设计....
      

  3.   

    首先利用count(*)获取记录总数,然后自定义滚动条,平均分配滚动条最小滚动量与记录总数间的关系,计算滚动条总长度,比如表格一行高度为10,数据记录总数10000,则滚定条总高度为10*10000,若界面最多能显示100条数据(界面高度除以行高),则当滚动条位置为总高度的X(X为百分比)的位置时,显示的数据为:从第10000*X(如果不是整数,则取整数+1;若为整数,则取整)条记录开始的100条记录。大致思路如上,比较麻烦的说
      

  4.   

    分页嘛 SQL SERVER 的没有分页
      

  5.   

    难道SQLSERVER那种显示数据方式不好吗?比分页能省很多内存
      

  6.   

    jtable这个东西没听过,来学习下
      

  7.   

    ResultSet.next()时:
      如果内存中没有缓存数据,则从DB获取数据(默认10条),并放入缓存;
      如果内存中有缓存数据,则从缓存中获取数据;
    如果ResultSet的游标是单向滚动的,则next过的数据会被从缓存中删除,所以查询1万和100万是一样的。JDBC、ADO都是这么做的,这部分都是现成的。使用时,只要抓着ResultSet不放,每次从已打开的ResultSet中获取数据。