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

fetch previous record in sql by servlet

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

我有一个名为 abc 的 table 及其两列名为 FS 有 5 条记录。

实际上我想做的是在单击下一步按钮后,我从数据库中获取下一条记录,但是当我单击上一个按钮时,应该获取上一条记录,但它不起作用。我哪里错了??

对于 NEXT 按钮,我发送到另一个 servlet (NewServlet1.java) 并且只是代替 PREVIOUS 我写了 NEXT,它工作正常但是对于 PREVIOUS 按钮,我在 sql 中用 PREVIOUS 替换了 NEXT查询并将其放入新的 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>

From the documentation and syntax diagramFETCH 必须后跟 FIRSTNEXT(可互换)。没有 PREVIOUS 选项。您没有提供预期的关键字之一,因此您得到 ORA-00905。

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