通过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.jsp
和display.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
输入,以便第一次调用servlet
时count
参数将为空。
【讨论】:
其实偏移量需要比count
小一,对吧?
嘿 thnx Titus 但是在第一行之后它直接显示第三行,然后点击下一步按钮后什么都没有发生
@shawnt00 我在上面贴了请看
@shawnt00 我认为你是对的,我有一段时间没有使用 Oracle 数据库,但我刚刚查看了doc,它说起点是OFFSET + 1
,但我'不确定OFFSET
是否可以为 0
已经分成了两种情况,所以偏移量0不会发生。以上是关于通过servlet在oracle中获取第2行,第3行....200行表的主要内容,如果未能解决你的问题,请参考以下文章