gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 04:59:15 25 4
gpt4 key购买 nike

我尝试通过单击浏览器上的提交按钮来获取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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com