我正在使用Oracle 9i作为后端。我想要从表中使用简单的SELECT (select COUNT(ID) from state)语句从表中检索数据。却得到了一个错误信息:“ORA-01002: fetch out of sequence”。(select COUNT(ID) from state)语句放在循环里,不过我已经closeStatement了,我没用存储过程,是在java代码里写的,conn.setAutoCommit(false);我也设了.
语句中也没有 for update 这个东西。
这个错误是由于我狂点检索按钮出现的,语句是在检索区分下的。
while(条件){
stb.append(select COUNT(ID) from table);
sqlExe.setPrepareStatement(stb.toString());
ResultSet retQnum = sqlExe.executePreparedSelect();
sqlExe.closeStatement();
retQnum.close();

请问如何解决?谢谢各位

解决方案 »

  1.   

    这个错误一般发生在解析和执行SQL语句之前试图取得数据。
    你在select COUNT(ID) from table这个时候就已经把表中所有的数据都取了个遍了,然后你再次executePreparedSelect,估计是你executePreparedSelect方法中又有查询的操作,所以发生了这样的错误。
      

  2.   

    我用了java的synchronized块,以为能控制一下(我以为我这样狂点检索操作可能会引起线程问题)但没解决,还是ORA-01002 错误。谢谢你,我应该怎样解决呀?
    while(条件){
    stb1.append(select COUNT(ID) from table1);
    sqlExe.setPrepareStatement(stb1.toString());
    ResultSet retQnum1 = sqlExe.executePreparedSelect();
    sqlExe.closeStatement();
    retQnum1.close();stb2.append(select COUNT(ID) from table2);
    sqlExe.setPrepareStatement(stb2.toString());
    ResultSet retQnum2 = sqlExe.executePreparedSelect();
    sqlExe.closeStatement();
    retQnum2.close();

    代码是这样的。