java - 通过servlet获取sql中的上一条记录

标签 java sql oracle jsp servlets

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

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

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

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

显示.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 documentationsyntax diagramFETCH 后面必须跟有 FIRSTNEXT (它们是可以互换的)。没有 PREVIOUS 选项。您没有提供预期的关键字之一,因此您收到 ORA-00905。

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

关于java - 通过servlet获取sql中的上一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28454887/

相关文章:

php - 热门评论 sql查询

c# - 如何从 datagridview 中选定的行获取 ID?

java - 如何使用 Java/JDBC 在 Oracle 数据库中存储长度超过 4000 个字符的字符串?

java - 多线程访问LinkedList时的线程安全

java - Swagger 不选择空值的方法

java - 如何向表添加监听器?

php - 哪个 PHP ORM 与 Oracle 一起工作并且不需要 PDO_OCI?

java - 如何在缓存中同步文件创建(不写入文件,只是创建)

sql - 如何获取表中某列的最大值?

java - QueryDSL group by hours in a time range