繁体   English   中英

通过servlet获取sql中的先前记录

[英]fetch previous record in sql by servlet

我试图通过单击浏览器上的提交按钮来获取oracle中的先前记录,但是异常即将到来java.sql.SQLSyntaxErrorException:ORA-00905:缺少关键字 ,我在以下代码中做错了什么?

我有一个名为abc的表,其两列名为FS,具有5条记录。

实际上,我要执行的操作是单击“下一步”按钮后,我将从数据库中获取下一条记录,但是当我单击“上一步”按钮时,应获取前一条记录,这是行不通的。 我哪里错了?

对于NEXT按钮,我将其发送到另一个servlet(NewServlet1.java),而只是代替PREVIOUS,我编写了NEXT,它工作正常,但对于PREVIOUS按钮,我在sql查询中用PREVIOUS替换了NEXT,并将其放在New Servlet中,但无法正常工作。 ..

home.jsp

<form action="NewServlet1" method="post">
<input type="submit" value="NEXT">
</form>

NewServlet.java

String count = request.getParameter("count");
int c = 0;
if(count != null && count.matches("\\d+")){
c = Integer.parseInt(count);
          rs=st.executeQuery("SELECT * FROM abc ORDER BY 'F','S' OFFSET "+String.valueOf(c) +" ROWS FETCH PREVIOUS 1 ROWS ONLY");
    }
    else{

  rs=st.executeQuery("SELECT * FROM abc ORDER BY 'F','S' FETCH PREVIOUS 1 ROWS ONLY");
}

request.setAttribute("count",++c);
request.getRequestDispatcher("display.jsp").forward(request, response);

display.jsp

<form action="NewServlet" method="post">
<input type="text" name="count"  value="<%(Integer)request.getAttribute("count")%>" style="display:none;">
<input type="submit" value="PREVIOUS">
  </form>

从文档语法图中FETCH必须紧跟FIRSTNEXT (可互换)。 没有上PREVIOUS选项。 您没有提供预期的关键字之一,因此得到ORA-00905。

要返回某一行,您需要根据您的计数器偏移比您想象的少的行,然后获取NEXT ROW 因此,如果您当前正在查看第10行,则需要偏移8,然后获得下一个,即第9行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM