簡體   English   中英

如何在Java中獲取可滾動的結果集

[英]How Get a scrollable resultset in Java

我在我的應用程序中使用Java,在后端使用Oracle數據庫

ResultSet GetCar()
{
CallableStatement cs;
ResultSet rs;

try{
    //conn = dbConnector.getConnection();
conn = dbConnection.getStaticConnection();
cs = conn.prepareCall("begin select_all_car(?); end;",
              ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
rs = ((OracleCallableStatement)cs).getCursor(1);
return rs;
}
}

void foo()
{
    ResultSet rs = GetCar();
    rs.beforeFirst();
}

在foo rs.beforeFirst給我這個錯誤: “僅轉發結果集的無效操作:beforeFirst”

這是我對ORACLE數據庫的查詢:

CREATE OR REPLACE PROCEDURE
SELECT_ALL_CAR 
(
  pCar_Recordset  OUT   SYS_REFCURSOR
)
AS

BEGIN

OPEN pCar_Recordset FOR
  SELECT  ID, MANUFACTURER, MAKE, YEAR, MODEL
  FROM    CAR
  ORDER BY ID;

END SELECT_ALL_CAR;

我究竟做錯了什么? 是oracle游標嗎? 如何使我的結果集可滾動?

正如@Przemyslaw所指出的,您可以使用PreparedStatement來調用您的存儲過程(無需將您的實現移動到前端,並且您的前端不應該直接進行SQL調用)您可以定義一個臨時過程調用調用你現有的( 打包的吧?)存儲過程。 如果這是不可接受的,您可以創建一個視圖(或物化視圖)並從中進行查詢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM