关于指针和resultset,我觉得涉及一个与数据库连接的问题,如果我保存resultset,那我何时关闭与数据库的连接呢,总不能用户查询一次我就开一个连接呀!这样很快就会达到最大连接的!

解决方案 »

  1.   

    如果用游标或resultset的话,好像无法在本页就关闭连接吧!
      

  2.   

    有本书叫 Java servlets什么的,我记不清楚拉,你到网上书店查吧,里面有个好例子!!!!!!!!!
      

  3.   

    CREATE PROCEDURE SP_GetauthorPage(
     @CurrentPage int,
     @PageSize int
    ) AS
    declare @sSQL1  varchar(500)
    declare @sSQL2  varchar(500)
    declare @iCount  int
    declare @PageCount int
    declare @RecordCount intset @iCount=@CurrentPage*@PageSize
    print @iCountselect @RecordCount=Count(*) from  author
    print @RecordCountif  @RecordCount >0  
    begin
    if @RecordCount % @PageSize=0
    begin
    set @PageCount=@RecordCount/@PageSize
    end
    else
    begin
    set @PageCount=@RecordCount/@PageSize+1
    end
    if @CurrentPage<=@PageCount and @CurrentPage>0
    begin
    set @sSQL1='(select top '+ ltrim(rtrim(str(@iCount))) +' * from author order by au_lname ) as tmp'
    --print @sSQL1

    set @sSQL2='select top ' +ltrim(rtrim(str(@PageSize)))+' * from '+@sSQL1 +' order by au_lname desc '
    print @sSQL2

    EXEC(@sSQL2)
    end
    else
    begin
    select top 0 * from author
    end

    end
    else
    begin
    select * from author
    end
    GO
      

  4.   

    Java开发指南——Servlets和JSP篇
        (美)Bill Brogden/ 7-5053-6658-0/电子工业出版社
      

  5.   

    我只要大家给个最可行,最实际的思路和方法就可以了,编程我自己来就行了。
    to hegum(hg):
    你能告诉我那本书里例子的思路吗?
      

  6.   

    我也在做这样的事,我用的是java servlet 网页显示,我是这样的处理的,用存储过程将记录取出来,定义一个Vector()矢量,用rs.next()!=null将rs中的记录取出来放到Vector中,再将Vector放到session中,分页显示时从session中取数据,你有足够大的内存就可以了,我的记录控制在2000条内。还有我想问一个很简单的问题:如果查询记录有几万到几十万条,即使你实现了分页显示,就当你一页显示100条,那你至少也要一百多页,那你怎么知道你所要的在哪一页?这样做有意义么?
      

  7.   

    我最早也是采用你那种方法,即将所有的纪录全部取出来,存在Vector中,我是把vector放在了一个bean中,但那会我们数据库中最多才3000多条记录。现在已经有10几万的记录了,所以将纪录全部取出,就造成了out of memory!
    你觉得我后来的方案如何呢?(14:57分发的那个)这点我也想过,所以我还会再做一个功能,就是在以得到结果中的再次查询(怎么实现还没想好)
      

  8.   

    在jdbc里采用sql语句解决,每次翻页查询数据库,取出每次所需要的几条数据,一个sql轻松解决,前提是获得已经获得所有的页数,包括你的记录总数
    采用vector解决对于数据量小比较合适,大数据量不行,一次查询放到session里,如果用户量很大,服务器可能撑不住
      

  9.   

    是不是可以这样整个网站用一个JavaBean,里面存所有的几十万条数据(可以用Vector),所有的查询从它里面取
    然后再做一个JavaBean用来访问上面一个JavaBean,提供一些方法来实现分页查询。
    做一个类似监听器的程序,如果数据库有更新,就自动的更新第一个JavaBean.缺点,如果类似的分页页面很多就特别耗内存,但只有一两个应该行吧?
      

  10.   

    另一个参考www.google.com,楼上有人题过
    每次取十页放在Session中,十页十页的从数据库中取。
    页面上可以提供 前十页 1 2 3 4 5 6 7 8 9 10 后十页缺点速度稍慢,
      

  11.   

    我觉得你还是应该看看
    Java开发指南——Servlets和JSP篇
        (美)Bill Brogden/ 7-5053-6658-0/电子工业出版社 
    里面有连接池等提高性能的东西!可惜我没有这本书,以前在学校图书馆看的
      

  12.   

    回复人: X25(X25) (2001-9-24 16:59:48)  我觉得X25的应该是当前最好的解决办法吧?只是,我对于存储过程太过陌生了一点都不太会编写的。上述的存储过程似乎没有做的很灵活,不知道能否再增加一个参数--就是查询使用的SQL语句?这样就不用单独编写存储过程了,虽然速度可能稍慢
      

  13.   

    数据量大的时候你最好不要用VECTOR来存储,否则会浪费大量的资源,因为VECTOR中放的object变量,你可以把取出的记录的每一个字段都放在一个VECTOR中,字段之间用某个约定的分割符如“|”,一条记录之间又用另一个分割符,“~~”,这样你只需要在页面中解析一下就行,既可以减少网络流量,又可以提高JSP的速度,和乐而不为呢?
      还有,在分页显示的时候最好判断一下,得到的页面号码是不是为“null”,如果不为NULL就不要去查询数据库。