类代码如下
public static ResultSet executeQuerySQL(String sql) {

try {
conn =  ConnOper.getConn();
    
pstmt = conn.prepareStatement(sql);
     rs = pstmt.executeQuery();
     ConnOper.close(conn, pstmt);
     } catch(Exception e) {
    
     }  finally {
    
    
     }
     return rs;
}前台
ResultSet rs = ConnOper.executeQuerySQL(querySql);各位高手,怎么总是提示
java.sql.SQLException: [Microsoft][SQLServer 2000 Driver for JDBC]Object has been closed.可是我参考http://www.cnsdn.com.cn/blog/article.asp?id=2166和我一样的处理啊。

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【junzhang4008】截止到2008-07-31 10:16:28的历史汇总数据(不包括此帖):
    发帖的总数量:51                       发帖的总分数:3727                     每贴平均分数:73                       
    回帖的总数量:1183                     得分贴总数量:512                      回帖的得分率:43%                      
    结贴的总数量:51                       结贴的总分数:3727                     
    无满意结贴数:0                        无满意结贴分:0                        
    未结的帖子数:0                        未结的总分数:0                        
    结贴的百分比:100.00%               结分的百分比:100.00%                  
    无满意结贴率:0.00  %               无满意结分率:0.00  %                  
    敬礼!

    取消马甲机器人,请点这里:http://www.java2000.net/mycsdn/robotStop.jsp?usern=junzhang4008
      

  2.   

     conn =  ConnOper.getConn();???
    getConn()也是你自己写的方法么,
    贴多点
      

  3.   

    ConnOper.close(conn, pstmt);
    里面的代码是怎样的,为什么这么用?
    一般把关闭数据库的操作专门写在一个方法内,用完后再调用那个方法。
      

  4.   

    public static Connection getConn(){
       Connection conn = null;
    try {
    Class.forName(driver).newInstance();
    conn=DriverManager.getConnection(url,user,password);
    } catch (InstantiationException e) { 
    e.printStackTrace();
    } catch (IllegalAccessException e) { 
    e.printStackTrace();
    } catch (ClassNotFoundException e) { 
    e.printStackTrace();
    } catch ( Exception e) { 
    e.printStackTrace();
    }
    return conn;
    }
      

  5.   

    不应该在executeQuerySQL内部关闭数据库。
      

  6.   

    protected void closeConn(Connection conn,CallableStatement cstmt,PreparedStatement pstmt){
    try {
    if(cstmt != null){
    cstmt.close();
    }
    if(pstmt != null){
    pstmt.close();
    }
    if(conn != null){
    conn.close();
    }
    }catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }偶搞.net的。.net都这么些。。呵呵
      

  7.   

    pstmt和conn都关闭了 rs怎么还有值呢 
      

  8.   


    可是参考他的。他也这么些的啊http://www.cnsdn.com.cn/blog/article.asp?id=2166
      

  9.   

    我估计出现这个错误的原因应该是你调用了 ConnOper.close(conn, pstmt);这个方法,你可以把这个方法先注释掉在试试
      

  10.   

    不应该在executeQuerySQL方法内部关闭数据库。
    而应该用完返回的数据集后再主动调用关闭数据库的操作。
      

  11.   

    connection.close 自动关闭 Statement.close 自动导致 ResultSet 对象无效,注意只是 ResultSet 对象无效,ResultSet 所占用的资源可能还没有释放。
      

  12.   

    建议在关闭前把rs封装到list里面,在页面上直接调用list
      

  13.   

    先不关闭试试,然后debug一步一步走,就看到哪关了。
      

  14.   

     ConnOper.close(conn, pstmt);
    放到finally里面去
      

  15.   

    如果一定要传递ResultSet,应该使用RowSet,RowSet可以不依赖于Connection和Statement。
    Java传递的是引用,所以如果传递ResultSet,你会不知道Statement和Connection何时关闭,不知道ResultSet何时有效。
      

  16.   

    算了。还是弄个map返回把。
    各位兄弟能提供个小例子么?多谢哈。就是返回map。对map取值的。