通过servlet在oracle中获取第2行,第3行....200行表

Posted

技术标签:

【中文标题】通过servlet在oracle中获取第2行,第3行....200行表【英文标题】:fetch 2nd row, 3rd row....200 row of a table in oracle by servlet 【发布时间】: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..." 【参考方案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不会发生。

以上是关于通过servlet在oracle中获取第2行,第3行....200行表的主要内容,如果未能解决你的问题,请参考以下文章

Oracle - 使用第二个表中的行更新第一个表中的数据

Oracle开发者中级第3课(如何对行进行排序)实验

求大神,怎么通过shell根据行号获取字符串

iOS:如何传递节中的行索引

jmeter-获取数据库中的数据

servlet怎么从浏览器地址栏获取?后面的数据