问题是这样的,我首先需要对数据库进行查询,对返回来的结果集再进行update.代码如下:
  Connection con = this.getConnection();//获取一个数据库连接
  String sql = "......";
  Statement stmt  = con.createStatement
 ( ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
  ResultSet rs = stmt.executeQuery(sql);
  while(rs.next())
 {
     //这里就是对数据库的update了,
     sql = "......";
     stmt.executeUpdate(sql);
     
 }
  跟踪了一下,第二次执行rs.next()的时候出错了,错误提示信息是:数据库结果集已关闭。
  但是如果对于对数据库的更新我是用新的Connection和Statement的话,就没有问题了,请高手指点一下这是怎么回事?

解决方案 »

  1.   

    while(rs.next())
     {
         //这里就是对数据库的update了,
         sql = "......";
         stmt.executeUpdate(sql);
         
     }
    写法错误。
    应该把     sql = "......";
         stmt.executeUpdate(sql);
         写到循环外面。
      

  2.   

    对呀,怎么能把stmt.executeUpdate(sql);放到rs的循环里面呢?
      

  3.   

    执行语句的所有方法都将关闭所调用的 Statement 对象的当前打开结果集(如果存在)。这意味着在重新执行 Statement 对象之前,需要完成对当前 ResultSet 对象的处理。
      

  4.   

    while(rs.next())
     {
         //这里就是对数据库的update了,
         sql = "......";
         stmt.executeUpdate(sql);
         
     }
    rs还没完成 
    stmt改变 当然不行了
      

  5.   

    应该你的第一个connection是获取连接的,第一个stmt是用于查询,当你执行完后他们两个的任务完成了,系统就把它给关了,而你又需要用它来做其他的事情。
    用新的Connectin和Statement肯定就OK了。不知这样说对不?
      

  6.   

    用两个Statement去管理两个结果集.