java - 从servlet以自动增量方式获取oracle中的记录

标签 java sql oracle jsp servlets

我在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>

单击“下一步”按钮后,从 servlet NewServlet.java 中获取第一行(Apple 和 Mango):

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);         

结果.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”按钮时,下一行“老虎和狮子”应该从数据库中获取并显示,它是如何显示的是可能的吗???我应该在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>

结果.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了,语法可能不对。

关于java - 从servlet以自动增量方式获取oracle中的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28396926/

相关文章:

java - 如何获取 Swing 小部件的图像?

c# - MAX(id) 使用 SqlDataReader C#

database - Oracle ODBC 默认数据库

c# - ASP.NET 和 Oracle 存储过程错误

java - 如何设置 spring-boot 以允许从外部 IP 地址访问网络服务器

java - 如何使用gson序列化Pair的ArrayList

sql - 在 SQL Server 中使用 TRY...CATCH 和 @@ERROR 有什么区别?

mysql - SQL:将两列相加为 'Name' 并在 where 中使用该名称

sql - 线索和案例表达

java - 如何将制表符转换为空格并在 android studio 中保存时自动格式化