gpt4 book ai didi

java - 从 AccessDB 中提取数据时出现的问题

转载 作者:行者123 更新时间:2023-12-02 04:48:13 25 4
gpt4 key购买 nike

我正在尝试使用以下代码从访问数据库中提取数据并填充

    String[] tableColumnsName = {"col 1","col 2","col 3"}; 
DefaultTableModel aModel = (DefaultTableModel) jTable2.getModel();
aModel.setColumnIdentifiers(tableColumnsName);
try {
// the query
rs = db.query("SELECT * FROM Students ");
} catch (SQLException ex) {
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE, null, ex);
}

// Loop through the ResultSet and transfer in the Model
java.sql.ResultSetMetaData rsmd = null;
try {
rsmd = rs.getMetaData();
} catch (SQLException ex) {
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE, null, ex);
}
//int colNo = rsmd.getColumnCount();
try {
while(rs.next()){
Object[] objects = new Object[10];
// tanks to umit ozkan for the bug fix!
for(int i=0;i<10;i++){
objects[i]=rs.getObject(i+1);
}
aModel.addRow(objects);
}
} catch (SQLException ex) {
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE, null, ex);
}
jTable2.setModel(aModel);
}//GEN-LAST:event_jButton2ActionPerformed

我能够从其中提取数据。我如何从另一个表中提取它?

最佳答案

您对数据做出了很多假设,并在完成资源后将其保留为开放状态。

首先,您应该使用 ResultSetMetaData 构建 TableModel 列信息,然后使用它从 ResultSet 构建行数据,例如...

DefaultTableModel aModel = new DefaultTableModel();
try (ResultSet rs = db.query("SELECT * FROM Students ")) {
ResultSetMetaData rsmd = rs.getMetaData();
for (int col = 0; col < rsmd.getColumnCount(); col++) {
aModel.addColumn(rsmd.getColumnName(col + 1));
}

while (rs.next()) {
Object[] value = new Object[rsmd.getColumnCount()];
for (int col = 0; col < rsmd.getColumnCount(); col++) {
value[col] = rs.getObject(col + 1);
}
aModel.addRow(value);
}
} catch (SQLException ex) {
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE, null, ex);
}
jTable2.setModel(model);

现在,我将构建一个实用方法,它可以接受您的查询(或表名称)并返回 TableModel

关于java - 从 AccessDB 中提取数据时出现的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29484219/

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