ResultSet未打开。不允许“下一步”操作

时间:2014-04-18 05:53:27

标签: sql database derby

在这个查询操作中是否有任何错误基本上我正在检索表的一个列文本然后我再次提供检索到的信息 访问同一个表的其他内容,但这里的问题是第一个查询只执行一次,然后它会抛出此消息的异常  “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());}

如果有人对此有答案,请告诉我,让我知道如何在此提前解决此问题

2 个答案:

答案 0 :(得分:2)

是否可以将语句对象更改为内部查询的新对象

类似

用于内部查询

rss = newStatement.executeQuery(“SELECT ////

答案 1 :(得分:-1)

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");

另外,您可以将语句对象更改为内部查询的新对象