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