如果我将结果集传递给tablemodel,如何在MyTableModel中使用setValueAt()

时间:2016-12-28 14:34:58

标签: java swing jtable

我有一个MyTableModel,我将结果集作为参数传递给构造函数。

import javax.swing.table.*;
import java.sql.*;
class MyTableModel extends AbstractTableModel {
ResultSet rs;
ResultSetMetaData rsmd;
MyTableModel(ResultSet rs){
    try{
        this.rs=rs;
        rsmd=rs.getMetaData();
    }
    catch(Exception e) {
        System.out.println(e);
    }
}
public int getColumnCount(){
    try{
        return rsmd.getColumnCount();
    }
    catch(Exception e){
        return -1;
    }
}
public String getColumnName(int i){
    try{
        return rsmd.getColumnName(i+1);
    }
    catch(Exception e){
        return null;
    }
}
public int getRowCount(){
    try{
        rs.last();
        return rs.getRow();
    }
    catch(Exception e){
        return -1;
    }
}
public Object getValueAt(int i,int j){
    try{
        rs.absolute(i+1);
        return rs.getObject(j+1);
    }
    catch(Exception e){
        return null;
    }
}

public boolean isCellEditable(int i,int j){
    return true;
}

public void setValueAt(Object value, int i, int j){
}

}

现在我如何使用setValueAt()方法来设置特定的单元格。 设置了我希望在数据库中更新此数据的单元格值后,请告诉我如何更新此数据。

1 个答案:

答案 0 :(得分:1)

您不应该使用ResultSet作为TableModel的后台存储,因为需要关闭ResultSet以释放数据库/连接资源。

相反,您应该将ResultSet中每个元素的内容复制到String[],并将每一行添加到List。然后使用List作为TableModel的参数。