class DBManager{
//省略连接部分
//下面是其中一个方法
public ResultSet executeQuery(String queryStr)
{
ResultSet rs=null;
try
{
rs=stmt.executeQuery(queryStr);
}
catch(SQLException e)
{
System.out.println("SQLException"+e.getMessage());
}
return rs;
}
}另外一个类   class QueryTableModel extends AbstractTableModel {
private final boolean DEBUG=true;
private String sqlStr;
private ResultSet rs=null;
public QueryTableModel(String sqlStr) {
this.sqlStr=sqlStr;
rs=dbm.executeQuery(sqlStr);
}
public int getColumnCount() {
return dbm.countColumns();
}
public int getRowCount() {
int row=0;
try{
ResultSet rsq=dbm.executeQuery(sqlStr);
rsq.last();
row=rsq.getRow();
rsq.beforeFirst();
}
     catch(SQLException se){
    JOptionPane.showMessageDialog(null,"SQLException!!!:"+se.getMessage());
     }
     finally{
     return row;
     }
}
public String getColumnName(int columnIndex) {
columnIndex++;
return dbm.getColumnName(columnIndex);
 }
        public Object getValueAt(int rowIndex, int columnIndex) {
         String str=null;
         try{
         str=rs.getString(++columnIndex);
         System.out.println(str);
         }
         catch(SQLException e){
         System.out.println("ex:"+e.getMessage());
         }
return str;
        }
        public Class getColumnClass(int c) {
            return getValueAt(0, c).getClass();
        }
        public boolean isCellEditable(int rowIndex, int columnIndex) {
if(columnIndex!=0){
return true;
}
return false;
        }
        public void setValueAt(Object value, int rowIndex, int columnIndex) {
fireTableCellUpdated(rowIndex, columnIndex);
            }            
        }//用类QueryTableModel创建JTabel getValueAt()方法出现
ResultSet is closed Exception
但在constructor里已经得到一个ResultSet(而且测试过Result在constructor范围内可用)
请问为何?

解决方案 »

  1.   

    rs=dbm.executeQuery(sqlStr);的时候抛异常了.
      

  2.   

    这是constructor
    public QueryTableModel(String sqlStr) {
    this.sqlStr=sqlStr;
    rs=dbm.executeQuery(sqlStr);
    }
    如果改为
    public QueryTableModel(String sqlStr) {
    this.sqlStr=sqlStr;
    try{
    rs=dbm.executeQuery(sqlStr);
    }
    catch(Exception se){
        System.out.println("error");
         }

    }
    并没有exception
    而且在constructor内,rs是可用的~