gpt4 book ai didi

java - 使用 MySQL DB 中的一些数据填充 Swing 表

转载 作者:行者123 更新时间:2023-11-29 13:47:29 25 4
gpt4 key购买 nike

我需要用 MySQL DB 中的一些数据填充 Swing 表。问题在于该表未显示所有列(即 a.aircraftTypeb.aircraftCategory)。在 Debug模式下,我检查查询是否返回正确的数据。那么,为什么最后有些列没有显示呢?

    private JTable tbArrivals;
private QueryTableModelFS mdArrivals;


mdArrivals = new QueryTableModelFS();
tbArrivals = new JTable(mdArrivals);

private void fillArrivals() {
mdArrivals.setHost(url); mdArrivals.setDB(db); mdArrivals.setLogin(login); mdArrivals.setPassw(passw);

String query;

query = "SELECT a.id,a.flightNum_arr,a.from_ICAO,a.ETA,a.pkId,a.aircraftType,b.aircraftCategory " +
"FROM flightschedule a, aircrafts b " +
"WHERE a.aircraftType = b.aircraftType;";
mdArrivals.setQuery(query);
}


public void setQuery(String query) {
cache = new Vector();
try {
// Execute the query and store the result set and its metadata
Connection con = getConnection();
Statement statement = con.createStatement();
ResultSet rs = statement.executeQuery(query);
ResultSetMetaData meta = rs.getMetaData();
colCount = meta.getColumnCount();
// Rebuild the headers array with the new column names
headers = new String[colCount];
for (int h = 1; h <= colCount; h++) {
headers[h - 1] = meta.getColumnName(h);
}
while (rs.next()) {
String[] record = new String[colCount];
for (int i = 0; i < colCount; i++) {
record[i] = rs.getString(i + 1);
}
cache.addElement(record);
}
fireTableChanged(null);
rs.close();
if (con.getAutoCommit() != false) {
con.close();
}
} catch (Exception e) {
cache = new Vector();
e.printStackTrace();
}
}

最佳答案

我无法告诉您的 TableModel 是如何工作的(看起来您可能正在使用 DefaultTableModel),但我建议使用 vector 而不是数组来从结果集中获取数据。现在你的代码非常困惑。在一个循环中,您使用 (i - 1) 来访问数据。在下一个循环中,您将使用 (i + 1)。我知道原因是因为数组是从 0 开始的,而 ResultSet 是从 1 开始的。

当您使用 Vector 时,您的循环可以从 1 开始,然后您只需使用 addElement() 方法将数据添加到 Vector,这样您的代码就不必关心匹配索引。

请参阅 Table From Database 中的数据库中的表示例 .

关于java - 使用 MySQL DB 中的一些数据填充 Swing 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17190534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com