java中调用oracle中的分页程序出错??

小村长 2012-05-15 11:36:18
韩顺平的oracle视频中java调用分页程序代码:

import java.sql.*;


public class fenye {
public static void main(String[] args) {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection ct=DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl","scott","tiger");
CallableStatement cs=ct.prepareCall("{call fenye(?,?,?,?,?,?)}");
cs.setString(1,"emp");
cs.setInt(2,5);
cs.setInt(3,2);
cs.registerOutParameter(4,Types.INTEGER);
cs.registerOutParameter(5,oracle.jdbc.OracleTypes.INTEGER);
cs.registerOutParameter(6,oracle.jdbc.OracleTypes.CURSOR);
cs.execute();
int rowNow=cs.getInt(4);
int PageCount=cs.getInt(5);
ResultSet rs=(ResultSet)cs.getObject(6);
System.out.println("rowNow=:"+rowNow);
System.out.println("pagecount=:"+PageCount);
while(rs.next())
{
System.out.println("编号:"+rs.getInt(1));
}
}
catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

}


bug:

java.sql.SQLException: Ref 游标无效
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:180)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:222)
at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:285)
at oracle.jdbc.driver.OracleStatement.getCursorValue(OracleStatement.java:3211)
at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:5036)
at oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4964)
at oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:586)
at fenye.main(fenye.java:19)


求高手指正出错的原因??
...全文
89 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
小村长 2012-05-16
  • 打赏
  • 举报
回复
OK
我知道了 是我在分页的过程将游标给关闭了 哈哈
小村长 2012-05-16
  • 打赏
  • 举报
回复
它指示ResultSet rs=(ResultSet)cs.getObject(6);这句有错,,求解释??
薛定谔之死猫 2012-05-16
  • 打赏
  • 举报
回复
单独执行存储过程能执行么?提示信息表明输出参数的游标是有问题的!

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧