你可以用ResultSet 逐个的移动游标啊。这个游标是服务器端的,不占用本地内存。但是如果你要把那么多的数据一次性读取到内存里,那肯定要占用太多的内存了。正确并显示有20000多条数据2万条,我想你有3个方法解决
1 直接把ResultSet 传给显示代码,这样虽然丑陋,但有效
2 分多次查询,每次1000条,虽然看着很好,但性能极差
3 把查询结果用指定格式保存到临时文件里面,比如用xml,然后显示部分直接对xml文件进行操作。 正规开发推荐第三种。简单有效。
我自己用,肯定用第一种,我注重结果,管它什么规范。

解决方案 »

  1.   

    String sql=mySqlSting;
    ResultSet rs = DbAgent.SQLQuery(mySqlString);
    然后就是OutOfMemoryError.
    就是返回的rs里面的数据量多了就会提示这个错误,数据量少的时候一切正常.
      

  2.   

    直接传ResultSet肯定是不行了,因为就是ResultSet里面的数据量大了引起的OutOfMemory错误。20000条数据大概占用了100M的数据。而且这个查询可能查询的结果会更大,20完的数据也是可能的。只要执行全部数据的查询,而不是只查询一部分的话,就会出现错误。
    分多次查询确实好像是现在唯一的方法了,但是就Sybase好像没有提供每条记录的行号,也就是说无法定位到要查询第N到N+M条数据。
    至于第三种,确实不会,而且现在的主要问题应该是解决ResultSet占用内存过大而引起的OutOfMemory错误。
      

  3.   

    不觉得多次请求性能,多次请求的性能是一个二次函数,合理的一次请求条数会提高不少性能,
    如果用xml对接的方法,大数据量上估计时间效率很差