代码之家  ›  专栏  ›  技术社区  ›  Kieveli

如何在JDBC中设置游标类型?

  •  1
  • Kieveli  · 技术社区  · 17 年前

    我正在运行tomcat,并有一些显示表子集的jsp页面。我在一页上一次显示20行。当表中有大量数据时,jsp页面不会呈现。我猜测ResultSet正在使用客户端游标。我过去使用过ASP,我们总是使用服务器端的前向游标,在处理大量数据时从未遇到任何问题。我们的数据库是oracle 10g。

    我如何在JDBC中指定一个服务器端的前向游标?

    3 回复  |  直到 17 年前
        1
  •  3
  •   Kieveli    17 年前

    oracle驱动程序通过FetchSize属性实现服务器端游标。

    不幸的是,JDBC没有明确允许设置客户端游标和服务器端游标,因此不同的驱动程序以不同的方式实现它。以下是其他有帮助的链接:

    Fetch Size
    Cursors
    Oracle Driver

        2
  •  2
  •   adam    17 年前
    Statement stmt = con.createStatement(ResultSet.TYPE_FORWARD_ONLY);
    ResultSet rs = stmt.executeQuery(sql);
    

    这应该设置它,但显然 一些 司机们对此视而不见。

    您始终可以尝试在ResultSet级别再次设置它。

    rs.setFetchDirection(ResultSet.TYPE_FORWARD_ONLY);
    

    希望这能有所帮助。

        3
  •  0
  •   Dan Vinton    17 年前

    还没有完全回答这个问题,但您是否考虑过在WHERE子句中使用ROWNUM或ROWNUMBER显式地向SELECT查询添加分页?

    例如:对于第二页的数据,页面大小为20个元素:

    SELECT * 
      FROM MyDataObjects
      WHERE rownum > 20 AND rownum < 41
    

    这将确保最多返回一页记录,从而消除大光标问题。

    推荐文章