从 AccessDB 中提取数据的问题
Issue In pulling the data from AccessDB
我正在尝试使用以下代码从访问数据库中提取数据并填充
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
我可以从其中提取数据。我怎样才能从另一个 table 中提取它?
您正在对您的数据做出大量假设,并在完成这些假设后让您的资源保持开放状态。
首先,您应该使用 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);
现在,我将构建一个实用程序方法,它可以接受您的查询(或 table 名称)和 return TableModel
我正在尝试使用以下代码从访问数据库中提取数据并填充
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
我可以从其中提取数据。我怎样才能从另一个 table 中提取它?
您正在对您的数据做出大量假设,并在完成这些假设后让您的资源保持开放状态。
首先,您应该使用 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);
现在,我将构建一个实用程序方法,它可以接受您的查询(或 table 名称)和 return TableModel