簡體   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