将Mysql表中的数据行添加到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. 矢量同步

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

类向量Javadoc

model.addRow(gegevens[0]);行错误。你应该这样做:

   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);
        }
    } 

你还需要检查DefaultTableModel

根据DefaultTableModel的文档:

这是一个使用Vector of Vectors的TableModel的实现用于存储单元格值对象。

相关内容

  • 没有找到相关文章

最新更新