Java JTable缺少第一行

Java JTable缺少第一行,java,swing,jdbc,jtable,defaulttablemodel,Java,Swing,Jdbc,Jtable,Defaulttablemodel,我已经搜索了整个网络,但我找不到解决方案,所以我决定在这里询问 下面的问题:我使用这两种方法用DefaultTableModel填充JTable,结果集显示了正确数量的数据项(我已经用System.out.println搜索过了),但是JTable总是漏掉第一行 我正在使用一种方法获得如下结果集: public static JTable DBCFillBTableAuftraege() { Connection con = null; Statement stmt =

我已经搜索了整个网络,但我找不到解决方案,所以我决定在这里询问

下面的问题:我使用这两种方法用DefaultTableModel填充JTable,结果集显示了正确数量的数据项(我已经用System.out.println搜索过了),但是JTable总是漏掉第一行

我正在使用一种方法获得如下结果集:

    public static JTable DBCFillBTableAuftraege() {
    Connection con = null;
    Statement stmt = null;
    ResultSet rs = null;

    JTable table = null;

    try {
        con = DriverManager.getConnection(host, uName, uPass);
        stmt = con.createStatement( );
        rs = stmt.executeQuery("SELECT a.auftrags_nr, k.firma, a.auftragsdatum, a.lieferdatum, a.rechnungsbetrag, k.name, k.strasse, k.plz, k.ort from auftrag a join kunde k on k.kunden_nr = a.kunden_nr ");
        while (rs.next()) {
            table = new JTable(tableModel(rs));
            return table;
        }   
    } catch (SQLException e) {
        System.out.println(e);
    } finally {
        try {
            if (rs != null) {
                rs.close();
            }
            if (stmt != null) {
                stmt.close();
            }
            con.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
    return table;
}
然后调用此方法:

public static DefaultTableModel TableModel(ResultSet rs)
        throws SQLException {

    ResultSetMetaData metaData = rs.getMetaData();
    System.out.println(rs);
    // names of columns
    Vector<String> columnNames = new Vector<String>();
    int columnCount = metaData.getColumnCount();
    for (int column = 1; column <= columnCount; column++) {
        columnNames.add(metaData.getColumnName(column));
    }

    // data of the table
    Vector<Vector<Object>> data = new Vector<Vector<Object>>();
    while (rs.next()) {
        Vector<Object> vector = new Vector<Object>();
        for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
            vector.add(rs.getObject(columnIndex));
        }
        data.add(vector);
    }
    return new DefaultTableModel(data, columnNames);
}
它工作正常,它显示了我的列标题和数据,除了一个问题:


它总是缺少第一行而从第二行开始

您的问题从这里开始

// Move to first row...
while (rs.next()) {
    table = new JTable(tableModel(rs));
    return table;
}   
和舱单

// Move to second row and beyond...
while (rs.next()) {
    Vector<Object> vector = new Vector<Object>();
    for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
        vector.add(rs.getObject(columnIndex));
    }
    data.add(vector);
}
//移动到第二行及之后。。。
while(rs.next()){
向量=新向量();

对于(int columnIndex=1;columnIndex您的问题从这里开始

// Move to first row...
while (rs.next()) {
    table = new JTable(tableModel(rs));
    return table;
}   
和舱单

// Move to second row and beyond...
while (rs.next()) {
    Vector<Object> vector = new Vector<Object>();
    for (int columnIndex = 1; columnIndex <= columnCount; columnIndex++) {
        vector.add(rs.getObject(columnIndex));
    }
    data.add(vector);
}
//移动到第二行及之后。。。
while(rs.next()){
向量=新向量();
对于(int columnIndex=1;columnIndex
您在这里使用结果集的第一行,然后调用
tableModel()
,这将使用其他行。while循环没有用。只需执行以下操作即可

table = new JTable(tableModel(rs));
return table;
您在这里使用结果集的第一行,然后调用
tableModel()
,这将使用其他行。while循环没有用。只需执行以下操作即可

table = new JTable(tableModel(rs));
return table;

太谢谢你了,我自己永远也找不到它。)太谢谢你了,我自己永远也找不到它。)太谢谢你了!就是这样,我永远也找不到它myself@Rob987是的,那是鬼鬼祟祟的一个谢谢你!就是这样,我永远也找不到它myself@Rob987是的,那是个鬼鬼祟祟的家伙