通过 servlet 在 oracle 中获取第 2 行、第 3 行....200 行的 table
fetch 2nd row, 3rd row....200 row of a table in oracle by servlet
我有一个 table 在 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
中都存在的 NEXT 按钮时,如何获取第 3 条和第 4 条记录等直到第 100 行?
您可以使用作为请求属性传递的 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
参数将为空。
我有一个 table 在 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
中都存在的 NEXT 按钮时,如何获取第 3 条和第 4 条记录等直到第 100 行?
您可以使用作为请求属性传递的 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
参数将为空。