java - 将包含 Mysql 表中数据的行添加到 jtable

标签 java swing netbeans jtable

添加列是可行的,但是当我想将存储在 mysql 数据库中的列的数据添加到 jtable 时,我陷入了困境。它要求一个对象 vector[][] 但我不知道该提供什么

Connection con;
DefaultTableModel model = new DefaultTableModel();

public Hoofdscherm() {
    initComponents();
    uitvoerSpelers.setModel(model);

    try {
        con = DriverManager.getConnection("jdbc:mysql://localhost/fullhouse", "root", "hamchi50985");

        // selecteer gegevens uit fullhouse.speler tabel
        PreparedStatement stat = con.prepareStatement("SELECT * FROM fullhouse.speler");

        // sla deze GEGEVENS op in een resultset
        ResultSet resultaat = stat.executeQuery();

        // haal alle kolomnamen op PUUR VOOR DE MODEL VAN JTABLE 
        ResultSetMetaData data = resultaat.getMetaData();

        String[] colum = new String[15];
        for (int i = 1; i < data.getColumnCount(); i++) {
            colum[i] = data.getColumnName(i);
            model.addColumn(colum[i]);
            while (resultaat.next()) {
                Object[] gegevens  = new String[] {resultaat.getString(1)};
                model.addRow(gegevens[0]);
            }
        }    
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, ex);
    }
}

最佳答案

我认为你需要这样的东西。

注意 1. 还将列单独添加到结果集数据中。就像我在下面的代码中所示的那样。

Vector<String> rowOne = new Vector<String>();
rowOne.addElement("R1C1");
rowOne.addElement("R1C2");

Vector<String> rowTwo = new Vector<String>();
rowTwo.addElement("R2C1");
rowTwo.addElement("R2C2");

Vector<String> cols = new Vector<String>();

Vector<Vector> vecRow = new Vector<Vector>();
vecRow.addElement(rowOne);
vecRow.addElement(rowTwo);
cols.addElement("Col1");
cols.addElement("Col2");
JTable table = new JTable(vecRow, cols);

编辑

为了您的方便和要求,您可以遵循下面的代码结构。

 Vector<String> rows = new Vector<String>();
 Vector<Vector> dBdata = new Vector<Vector>();

// Add Columns to table
for (int i = 1; i < data.getColumnCount(); i++) {
    colum[i] = data.getColumnName(i);
    model.addColumn(colum[i]);
}

while (resultaat.next()) {
    // add column data to rows vector
            // Make sure that all data type is in string because of generics
    rows.add(resultaat.getString("columnName1"));
    rows.add(resultaat.getString("columnName2"));
    rows.add(resultaat.getString("columnName3"));

    // add whole row vector to dBdata vector
    dBdata.addElement(rows);
}
model.addRow(dBdata);

Vector 实现了动态数组。它与 ArrayList 类似,但有两点不同:

  1. vector 已同步。

  2. Vector 包含许多不属于集合框架的旧方法。

Class Vector Javadoc

希望这对您有帮助。

关于java - 将包含 Mysql 表中数据的行添加到 jtable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14343776/

相关文章:

java - Gmail API 获取邮件 'cannot resolve method execute()'

java - 如何删除 JScrollPane 内 JTable 顶部的 A?

java - 如何使用 setLayout(null) 使 JPanel 保持在顶部(在 z 轴上)

netbeans - 如何更改 NetBeans 中插入符号(光标)的闪烁率?

java - 编辑输出屏幕

java - 在 Android 中使用 ProGuard

java - 控制 servlet 中的类路径

java - 数组似乎在 Java 中通过引用传递,这怎么可能?

java - JFrame 过渡效果 - 当调用 setState(Frame.ICONIFIED) 时,它只是转到任务栏而没有动画

memory - 如何为 Netbeans 分配更多内存?