从MS SQL检索出来的数据,如:
select name,filename from sysdatabases;
怎样把这个结果放到JTable控件里面?

解决方案 »

  1.   

      例子:
    Frame类中是这样的
    private Object[][] info;
    private String[] names;
    JTable table = new JTable(info,names);
    table.setPreferredScrollableViewportSize(new Dimension(400, 50));
    JScrollPane scrollPane = new JScrollPane(table);
    this.getContentPane().add(scrollPane);info 和 names是这样获取的:public class ListSession {private Statement stmt ;
    private SessionWrap sew;
    private String[] names;
    private int i, j, rowNum, colNum;
    private Object[][] info;
    private String sqlstr;
    private ResultSet res;
    private ResultSetMetaData rsmd;public ListSession(String table,String items) {
    sew = new SessionWrap();
    stmt=sew.getStatement();
    listConnect(table,items);
    }private void listSessionClose() {
    sew.connectClose();
    }private void listConnect(String table,String items) {
    sqlstr = "select count(*) from "+table;  
    try {
    res = stmt.executeQuery(sqlstr);
    res.next();
    rowNum = res.getInt(1);
    } catch (SQLException e) {
    e.printStackTrace();
    }sqlstr = "select "+items+" from "+table;try {
    res = stmt.executeQuery(sqlstr);
    rsmd = res.getMetaData();
    colNum = rsmd.getColumnCount();formatResult();
    } catch (SQLException e) {
    e.printStackTrace();
    }
    listSessionClose();
    }private void formatResult()throws SQLException {
    names = new String[colNum];
    for (i = 1; i <= colNum; i++)  
    names[i - 1] = rsmd.getColumnName(i);
    info = new Object[rowNum][];
    i = 0;
    while (res.next()) {
    info[i] = new Object[colNum];
    for (j = 1; j <= colNum; j++) {
    info[i][j - 1] = res.getObject(j);
    }
    i++;
    }
    }
    public String[] getNames() {
    return names;
    }public Object[][] getInfo() {
    return info;
    }}