实现通过结果集显示数据库记录的TableModel

0
import javax.swing.table.*;
import java.sql.*;
import java.util.Vector;
public class ResultSetTableModel extends AbstractTableModel{

public ResultSetTableModel(ResultSetaResultSet,String[] columnNames) {
this.columnNames =columnNames;
rs = aResultSet;
try {
rsmd =rs.getMetaData();
}catch(SQLException e) {
e.printStackTrace();
}
}
public String getColumnName(int c) {

return columnNames[c];
}
public int getColumnCount() {
try {
returnrsmd.getColumnCount();
}catch(SQLException e) {
e.printStackTrace();
return0;
}
}
public int getRowCount() {
try {
rs.last();
returnrs.getRow();
}catch(SQLException e) {
e.printStackTrace();
return0;
}
}
public Object getValueAt(int r, int c) {
try {
rs.absolute(r+ 1);
returnrs.getObject(c + 1);
}catch(SQLException e) {
e.printStackTrace();
returnnull;
}
}

private ResultSet rs = null;
private ResultSetMetaData rsmd = null;
private String[] columnNames = null;
}

直接用这个还不行哦。
在具体用之前还要进行一下设置:
stmt =con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
不带参数使用默认值: createStatement()=
createStatement(ResultSet.TYPE_FORWARD_ONLY,ResultSet.CONCUR_READ_ONLY)

1.TYPE_FORWORD_ONLY,只可向前滚动;

2.TYPE_SCROLL_INSENSITIVE,双向滚动,但不及时更新,就是如果数据库里的数据修改过,并不在ResultSet中反应出来。

3.TYPE_SCROLL_SENSITIVE,双向滚动,并及时跟踪数据库的更新,以便更改ResultSet中的数据。
详看API