gpt4 book ai didi

java - 如何在 Java 中获取可滚动的结果集

转载 作者:行者123 更新时间:2023-12-04 20:13:10 25 4
gpt4 key购买 nike

我在我的应用程序中使用 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 中给我这个错误:“Invalid operation for forward only resultset : 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 调用)您可以定义一个临时过程调用,然后调用您现有的(打包 对吗?)存储过程。如果这 Not Acceptable ,您可以创建一个 View (或物化 View )并从中查询。

关于java - 如何在 Java 中获取可滚动的结果集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20414994/

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