在SWING框架中显示MySQL表

时间:2014-08-07 10:59:05

标签: java mysql swing jdbc

连接数据库后......

ResultSet result = stmt.executeQuery("SELECT * FROM `students`"); /*stmt is a Statement*/
ResultSetMetaData md = result.getMetaData();
int columnCount = md.getColumnCount();
Vector columns = new Vector(columnCount);
Vector data = new Vector();
Vector row = new Vector(columnCount);

for(int i=1; i<=columnCount; i++){
   columns.add(md.getColumnName(i));
}

while(result.next()){
  for(int j=1; j<=columnCount; j++){
    row.add(result.getString(j));
    data.addElement(row);
  }
}

JTable table = new JTable(data, columns);   /* Bla Bla Bla about the Table... */

此代码在SWING框架上显示MySQL表,但只有第一行重复。为什么呢?

3 个答案:

答案 0 :(得分:1)

这是因为您为所有行使用了Vector row = new Vector(columnCount);的一个实例。像下一个一样更改你的代码:

while (result.next()) {
        Vector row = new Vector(columnCount);
        for (int j = 1; j <= columnCount; j++) {
            row.add(result.getString(j));

        }
        data.addElement(row);
    }

答案 1 :(得分:1)

在while循环中写入Vector row = new Vector(columnCount);,您实际上将结果添加到行中,如下所示:

while(result.next()){
    Vector row = new Vector(columnCount);
      for(int j=1; j<=columnCount; j++){
        row.add(result.getString(j));
        data.addElement(row);
      }
    }

答案 2 :(得分:0)

获取tablemodel并向其添加行并将模型设置回表

e.g。

DefaultTableModel model = (DefaultTableModel )table.getModel();
while (result.next()) {
   Vector data = new Vector();
   for (int j = 1; j <= columnCount; j++) {
       data.add(result.getString(j));
   }
   model.addRow(data);
}
table.setModel(model);

DefaultTableModel model = new DefaultTableModel();
model.setColumnIdentifiers(columns);// pass your column names as a vector
while (result.next()) {
   Vector data = new Vector();
   for (int j = 1; j <= columnCount; j++) {
      data.add(result.getString(j));
    }
    model.addRow(data);
}
JTable table = new Jtable(model);