[英]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.