通过 servlet 获取 sql 中的先前记录
fetch previous record in sql by servlet
我正在尝试通过单击浏览器上的提交按钮来获取 oracle 中的先前记录,但是出现异常 java.sql.SQLSyntaxErrorException: ORA-00905: 缺少关键字,我是什么在下面的代码中做错了吗??
我有一个名为 abc 的 table 及其两列名为 F 和 S 有 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 diagram,FETCH
必须后跟 FIRST
或 NEXT
(可互换)。没有 PREVIOUS
选项。您没有提供预期的关键字之一,因此您得到 ORA-00905。
要返回一行,根据您的计数器,您需要比您想象的少偏移一行,然后得到 NEXT ROW
。因此,如果您当前正在查看第 10 行,则需要偏移 8 并获取下一行,即第 9 行。
我正在尝试通过单击浏览器上的提交按钮来获取 oracle 中的先前记录,但是出现异常 java.sql.SQLSyntaxErrorException: ORA-00905: 缺少关键字,我是什么在下面的代码中做错了吗??
我有一个名为 abc 的 table 及其两列名为 F 和 S 有 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 diagram,FETCH
必须后跟 FIRST
或 NEXT
(可互换)。没有 PREVIOUS
选项。您没有提供预期的关键字之一,因此您得到 ORA-00905。
要返回一行,根据您的计数器,您需要比您想象的少偏移一行,然后得到 NEXT ROW
。因此,如果您当前正在查看第 10 行,则需要偏移 8 并获取下一行,即第 9 行。