使用jdbc我使用oracleplsql函数来检索结果集,它并没有提供java中的所有记录
输出: rs码:19 问题:此代码返回的总行数比db中的行数少10行 如果50行以分贝表示,则显示40行,如果30行显示20行,如果9行显示0行。使用jdbc我使用oracleplsql函数来检索结果集,它并没有提供java中的所有记录,java,oracle,jdbc,Java,Oracle,Jdbc,输出: rs码:19 问题:此代码返回的总行数比db中的行数少10行 如果50行以分贝表示,则显示40行,如果30行显示20行,如果9行显示0行。 您需要一种ResultSet(rs)类型:ResultSet.TYPE\u SCROLL\u Unsensitive 或者ResultSet。键入\u SCROLL\u SENSITIVE使其工作 通常从rs.beforeFirst()开始计算结果集,因此将第一个元素计算为 我的建议是在存储过程中进行SELECT计数(*) 您需要一种Result
- 您需要一种ResultSet(rs)类型:
或者ResultSet.TYPE\u SCROLL\u Unsensitive
使其工作ResultSet。键入\u SCROLL\u SENSITIVE
- 通常从
开始计算结果集,因此将第一个元素计算为rs.beforeFirst()
我的建议是在存储过程中进行SELECT计数(*)
- 您需要一种ResultSet(rs)类型:
或者ResultSet.TYPE\u SCROLL\u Unsensitive
使其工作ResultSet。键入\u SCROLL\u SENSITIVE
- 通常从
开始计算结果集,因此将第一个元素计算为rs.beforeFirst()
我的建议是在存储过程中做一个SELECT COUNT(*)发现问题时,是ojdbc jar问题,当时使用的是ojdbc6,现在已替换为ojdbc14。jar更改后工作正常,感谢大家的回复。发现问题,是ojdbc jar问题,使用的是ojdbc6,现在已替换为ojdbc14。更改jar后,它工作正常,感谢大家的回复。您的存储过程是否使用上述参数返回正确的结果?捕获异常而不进行处理是个坏主意。你能试着打印异常,以确保你的循环没有被中断吗?是的,伯杰,当我从TOAD或SQLDeveloper调用它时,它给了我正确的结果。我还有代码在catch block.WardC中处理异常,我有代码在catch block中处理异常,循环运行良好。每次只删除10行。您的存储过程是否使用上述参数返回正确的结果?捕获异常而不处理异常是个坏主意。你能试着打印异常,以确保你的循环没有被中断吗?是的,伯杰,当我从TOAD或SQLDeveloper调用它时,它给了我正确的结果。我还有代码在catch block.WardC中处理异常,我有代码在catch block中处理异常,循环运行良好。每次只删除10行。嗨,Cassian,感谢您的快速回复,我如何才能获得
ResultSet.TYPE\u SCROLL\u不敏感或ResultSet.TYPE\u SCROLL\u敏感
int size=0<代码>如果(rs!=null){rs.beforeFirst();rs.last();size=rs.getRow();}给出异常。另外,我添加了count(*),它给了我正确的计数。下面是异常。rs.beforeFirst()
java.sql.SQLException:仅转发结果的操作无效set:beforefirfirstreplace行5:stmt=conn.prepareCall(sql);使用stmt=conn.prepareCall(sql,ResultSet.TYPE\u SCROLL\u不敏感,ResultSet.CONCUR\u只读)也可以检查此链接Hi Cassian,感谢您的快速回复,我如何获得ResultSet.TYPE\u SCROLL\u不敏感或ResultSet.TYPE\u SCROLL\u敏感
int size=0<代码>如果(rs!=null){rs.beforeFirst();rs.last();size=rs.getRow();}给出异常。另外,我添加了count(*),它给了我正确的计数。下面是异常。rs.beforeFirst()
java.sql.SQLException:仅转发结果的操作无效set:beforefirfirstreplace行5:stmt=conn.prepareCall(sql);使用stmt=conn.prepareCall(sql,ResultSet.TYPE\u SCROLL\u ResultSet.CONCUR\u READ\u不敏感),也可以检查此链接
CallableStatement stmt = null;
String sql = "begin ? := TEST.USER_LIST.queryByUser(?,?,?,?); end;";
ResultSet rs = null;
try {
stmt = conn.prepareCall(sql);
stmt.registerOutParameter(1, OracleTypes.CURSOR);
stmt.setString(2, "user1"); stmt.setInt(3, 1); // offset
stmt.setString(4, "Update_Date"); stmt.setString(5, "DESC");
stmt.execute();
if(stmt.getObject(1)==null) {
System.out.println("Null value");
} else {
rs = (ResultSet) stmt.getObject(1);
int i = 0;
while (rs.next()) { i++; }
System.out.println("rs size: " +i);
stmt.close();
rs.close();
}
} catch (Exception ex) {
} finally {
try { rs.close(); stmt.close();
} catch (Exception ex) {}
}
int size = 0 ;
if (rs != null){
rs.beforeFirst();
rs.last();
size = rs.getRow();
}