我有一个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()方法来设置特定的单元格。 设置了我希望在数据库中更新此数据的单元格值后,请告诉我如何更新此数据。
答案 0 :(得分:1)
您不应该使用ResultSet
作为TableModel的后台存储,因为需要关闭ResultSet以释放数据库/连接资源。
相反,您应该将ResultSet
中每个元素的内容复制到String[]
,并将每一行添加到List
。然后使用List
作为TableModel的参数。