【问题标题】:fetch 2nd row, 3rd row....200 row of a table in oracle by servlet通过servlet在oracle中获取第2行,第3行....200行表
【发布时间】:2015-04-09 07:39:04
【问题描述】:

我在oracle中有一个名为abc的表,有4条记录如下:

   F         S        
  apple    mango 
  tiger    lion
  oak      banana
  pink     orange

home.jsp

 <form action="NewServlet" method="post">
 <input type="text" name="count"  value="first" style="display:none;">
 <input type="submit" value="NEXT">
 </form>

NewServlet.java

if(request.getParameter("count").equals("first")){// when i clicked on next button having value first

    rs=st.executeQuery("SELECT * FROM abc ORDER BY 'F','S' FETCH FIRST 1 ROWS ONLY"); 
    }// fetches apple and mango
    else{
rs=st.executeQuery("SELECT * FROM abc ORDER BY 'F','S' OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY");// when i clicked on next button having value second (in display.jsp)
        }// fetches tiger and lion

request.getRequestDispatcher("display.jsp").forward(request, response);

display.jsp

<form action="NewServlet" method="post">
<input type="text" name="count"  value="second" style="display:none;">
<input type="submit" value="NEXT">
</form>

 String abc="", abc1=""
 abc= (String) request.getAttribute("fi");// prints apple 1st time and tiger 2nd time but 3rd and 4th record is not fetched
 abc1= (String) request.getAttribute("fi1");//prints mango 1st time and lion 2nd time but 3rd and 4th record is not fetched

当我继续单击home.jspdisplay.jsp 中都存在的“下一步”按钮时,如何获取第 3 条和第 4 条记录等直到第 100 行?

【问题讨论】:

  • 为什么这个好问题要-1????
  • else block sql语句要做什么修改??
  • 你不能将count 参数替换为第二个查询的偏移量吗?
  • ok 尝试但得到错误 sql 语句未正确结束
  • 你写过这样的东西吗? ...OFFSET " + getParameter("count").toString() + " ROWS..."

标签: java sql oracle jsp servlets


【解决方案1】:

您可以使用作为请求属性传递的count 变量。 例如:

NewServlet.java

String count = request.getParameter("count");
int c = 0;
String query;
if(count != null && count.matches("\\d+")){
    c = Integer.parseInt(count);
    query = "SELECT * FROM abc ORDER BY 'F','S' OFFSET "+String.valueOf(c)+" ROWS FETCH NEXT 1 ROWS ONLY";
}else{
   query = "SELECT * FROM abc ORDER BY 'F','S' FETCH FIRST 1 ROWS ONLY";
}
request.setAttribute("count",++c);

display.jsp

<input type="text" name="count"  value="<%=(Integer)request.getAttribute("count")%>" style="display:none;">

home.jsp

 <form action="NewServlet" method="post">
 <input type="submit" value="NEXT">
 </form>

home.jsp 中删除count 输入,以便第一次调用servletcount 参数将为空。

【讨论】:

  • 其实偏移量需要比count小一,对吧?
  • 嘿 thnx Titus 但是在第一行之后它直接显示第三行,然后点击下一步按钮后什么都没有发生
  • @shawnt00 我在上面贴了请看
  • @shawnt00 我认为你是对的,我有一段时间没有使用 Oracle 数据库,但我刚刚查看了doc,它说起点是OFFSET + 1,但我'不确定OFFSET 是否可以为 0
  • 已经分成了两种情况,所以偏移量0不会发生。
猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-31
  • 2018-04-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多