从 servlet 以自动增量方式在 oracle 中获取记录
fetch record in oracle in auto increment way from servlet
我有一个table在oracle中命名为abc和4条记录如下:
F S
apple mango
tiger lion
oak banana
pink orange
当用户点击 NEXT 按钮时,我想一个接一个地获取上述记录:
home.jsp----------------
<form action="NewServlet" method="post">
<input type="submit" value="NEXT">
</form>
点击 NEXT 按钮后,从 servlet 获取第一行(Apple 和 Mango)NewServlet.java:
NewServlet.java----------------
ResultSet rs=st.executeQuery("Select * from abc");
if (rs.next()) { // i have used if in stead of while
rs.getString("F");
rs.getString("S");
}
request.setAttribute("fi", rs.getString("F"));
request.setAttribute("fi1", rs.getString("S"));
request.getRequestDispatcher("result.jsp").forward(request, response);
result.jsp------------
String abc="", abc1=""
abc= (String) request.getAttribute("fi");
abc1= (String) request.getAttribute("fi1");
out.println(abc);// displays Apple
out.println(abc1);// displays Mango
这里我添加了 NEXT 按钮,当用户点击 NEXT 按钮时,下一行 tiger 和 lion 应该从数据库并要显示,怎么可能????NewServlet.java中的sql语句应该做什么样的修改??或者在 2 jsp 页中??
<form action="NewServlet" method="post">
<input type="submit" value="NEXT">
</form>
提前致谢
您可以尝试这样的操作:
home.jsp
<form action="NewServlet" method="post">
<input type="text" name="count" value="first" style="display:none;">
<input type="submit" value="NEXT">
</form>
result.jsp
<form action="NewServlet" method="post">
<input type="text" name="count" value="second" style="display:none;">
<input type="submit" value="NEXT">
</form>
NewServlet.java
String query;
if(request.getParameter("count").equals("first")){
query = "SELECT * FROM abc ORDER BY [someColumn] FETCH FIRST 1 ROWS ONLY"
}else{
query = "SELECT * FROM abc ORDER BY [someColumn] OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY"
}
就像我在评论部分所说的那样,您可以直接在 jsp
页面中进行数据库操作,即使您不能,这也是实现您想要的目标的不寻常方法。
我的建议是只有一个 jsp
页面,它从数据库中检索值并使用基于请求参数的偏移量。
例如:
single.jsp
<%
String count = request.getParameter("count");
int c;
if(count!= null && conut.match("\d+")){
c = Integer.parseInt(count);
c++;
}else{
c = 0;
}
String query = "SELECT * FROM abc ORDER BY [someColumn] OFFSET "+String.valueOf(c)+" ROWS FETCH NEXT 1 ROWS ONLY"
%>
<form action="single.jsp" method="post">
<input type="text" name="count" value="<%=c%>" style="display:none;">
<input type="submit" value="NEXT">
</form>
好久没用jsp
,语法可能不对。
我有一个table在oracle中命名为abc和4条记录如下:
F S
apple mango
tiger lion
oak banana
pink orange
当用户点击 NEXT 按钮时,我想一个接一个地获取上述记录:
home.jsp----------------
<form action="NewServlet" method="post">
<input type="submit" value="NEXT">
</form>
点击 NEXT 按钮后,从 servlet 获取第一行(Apple 和 Mango)NewServlet.java:
NewServlet.java----------------
ResultSet rs=st.executeQuery("Select * from abc");
if (rs.next()) { // i have used if in stead of while
rs.getString("F");
rs.getString("S");
}
request.setAttribute("fi", rs.getString("F"));
request.setAttribute("fi1", rs.getString("S"));
request.getRequestDispatcher("result.jsp").forward(request, response);
result.jsp------------
String abc="", abc1=""
abc= (String) request.getAttribute("fi");
abc1= (String) request.getAttribute("fi1");
out.println(abc);// displays Apple
out.println(abc1);// displays Mango
这里我添加了 NEXT 按钮,当用户点击 NEXT 按钮时,下一行 tiger 和 lion 应该从数据库并要显示,怎么可能????NewServlet.java中的sql语句应该做什么样的修改??或者在 2 jsp 页中??
<form action="NewServlet" method="post">
<input type="submit" value="NEXT">
</form>
提前致谢
您可以尝试这样的操作:
home.jsp
<form action="NewServlet" method="post">
<input type="text" name="count" value="first" style="display:none;">
<input type="submit" value="NEXT">
</form>
result.jsp
<form action="NewServlet" method="post">
<input type="text" name="count" value="second" style="display:none;">
<input type="submit" value="NEXT">
</form>
NewServlet.java
String query;
if(request.getParameter("count").equals("first")){
query = "SELECT * FROM abc ORDER BY [someColumn] FETCH FIRST 1 ROWS ONLY"
}else{
query = "SELECT * FROM abc ORDER BY [someColumn] OFFSET 1 ROWS FETCH NEXT 1 ROWS ONLY"
}
就像我在评论部分所说的那样,您可以直接在 jsp
页面中进行数据库操作,即使您不能,这也是实现您想要的目标的不寻常方法。
我的建议是只有一个 jsp
页面,它从数据库中检索值并使用基于请求参数的偏移量。
例如:
single.jsp
<%
String count = request.getParameter("count");
int c;
if(count!= null && conut.match("\d+")){
c = Integer.parseInt(count);
c++;
}else{
c = 0;
}
String query = "SELECT * FROM abc ORDER BY [someColumn] OFFSET "+String.valueOf(c)+" ROWS FETCH NEXT 1 ROWS ONLY"
%>
<form action="single.jsp" method="post">
<input type="text" name="count" value="<%=c%>" style="display:none;">
<input type="submit" value="NEXT">
</form>
好久没用jsp
,语法可能不对。