Набор результатов не открыт. Операция «Далее» не разрешена

Есть ли какие-либо ошибки в этих операциях запроса, в основном я извлекаю текст одного столбца таблицы, а затем снова даю полученную информацию для доступа к другому содержимому той же таблицы, но проблема здесь в том, что первый запрос выполняется только один раз, а затем выдает исключение с этим сообщением «ResultSet не открыт. Операция «следующая» не разрешена. Убедитесь, что автоматическая фиксация отключена». я не понимаю, почему это исключение.

это исключение, вызывающее запрос

rs=s.executeQuery("SELECT  k from document order by k asc ");
                    while(rs.next()){
                    ...
                    }

полный фрагмент кода здесь

try{
                 rs=s.executeQuery("SELECT  k from document order by k asc ");

                    while(rs.next()){

                System.out.println(".................."+rs.getString(1));

                rss=s.executeQuery("SELECT  k,  num, fre, spm from document where k='"+rs.getString(1)+"' order by k asc");

                rsmd = rss.getMetaData();
                 columnsNumber = rsmd.getColumnCount();  

                for (i=1; i<=columnsNumber; i++)
                {
                    //print Column Names
                    System.out.print(rsmd.getColumnLabel(i)+"\t\t");  
                }
                 while (rss.next()) {


                    for(i = 1 ; i <= columnsNumber; i++){
                          System.out.print(rss.getString(i) + "\t\t"); //Print one element of a row
                    }

                }
                }
                }
                catch(Exception e){ System.out.println(e.getMessage());}

Дайте мне знать, если у кого-то есть ответ на этот вопрос, и дайте мне знать, как решить эту проблему, заранее спасибо.


person user2318813    schedule 18.04.2014    source источник


Ответы (2)


Не могли бы вы изменить объект оператора на новый для внутреннего запроса?

что-то типа

для внутреннего запроса

rss=newStatement.executeQuery("ВЫБРАТЬ ////

person user3547829    schedule 18.04.2014

System.out.println(".................."+**rs.getString(1));**

rss=s.executeQuery("SELECT  k,  num, fre, spm from document where k='"+**rs.getString(1)+"**' order by k asc");

Вы использовали rs.getString(1)) дважды. это создает проблему. Сохраните значение rs.getString(1) в объекте и используйте его.

что-то типа

String str = rs.getString(1);

System.out.println(".................."+str);

rss=s.executeQuery("SELECT  k,  num, fre, spm from document where k='"+str+"' order by k asc");

Кроме того, не могли бы вы изменить объект оператора на новый для внутреннего запроса?

person user3547829    schedule 18.04.2014
comment
Я сделал то, что вы сказали, но результаты такие же, без изменений. - person user2318813; 18.04.2014
comment
Вы можете использовать getString() так часто, как захотите. - person a_horse_with_no_name; 28.02.2017