【问题标题】:Only one row of database table is displayed in JtableJtable中只显示一行数据库表
【发布时间】:2014-04-09 11:13:08
【问题描述】:

我在 Swing 中使用 Netbeans GUI 设计了一个 Jtable。现在根据我的要求,我必须将数据库表值显示到 jtable 中。

这是我的代码..

    Statement statement = (Statement) con.createStatement();
    ResultSet resultSet = statement.executeQuery(sql);
    ResultSetMetaData metaData = (ResultSetMetaData) resultSet.getMetaData();

    DefaultTableModel dtm = new DefaultTableModel();

    int columns = metaData.getColumnCount();

    Vector Column_Name = new Vector();
    Vector data_rows = new Vector();


    for (int i = 1; i < columns; i++) {
        Column_Name.addElement(metaData.getColumnName(i));
    }

    dtm.setColumnIdentifiers(Column_Name);

    while (resultSet.next()) {

        data_rows = new Vector();

        for (int j = 1; j < columns; j++) {
            data_rows.addElement(resultSet.getString(j));
        }
    }
    dtm.addRow(data_rows);

    jTable1.setModel(dtm);

    resultSet.close();

当表中有这么多行时,为什么这段代码只将我的数据库的一行显示到 jtable 中。 请帮我解决这个问题。

【问题讨论】:

  • 在循环外声明data_rows = new Vector();
  • @AbhikChakraborty 从这里删除并声明为 Vector data_rows = new Vector();在循环之外..仍然是同样的问题

标签: java mysql swing jtable


【解决方案1】:

每次你覆盖你的数据,因为你只添加了一次,目前是在while循环之后

所以尝试在循环中移动行数据的添加,例如:

while (resultSet.next()) {

    data_rows = new Vector();

    for (int j = 1; j < columns; j++) {
        data_rows.addElement(resultSet.getString(j));

    }

    dtm.addRow(data_rows);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多