从AccessDB中提取数据的问题[关闭]

Posted

技术标签:

【中文标题】从AccessDB中提取数据的问题[关闭]【英文标题】:Issue In pulling the data from AccessDB [closed] 【发布时间】:2015-04-07 05:13:13 【问题描述】:

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

    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

我可以从中提取数据。我怎样才能从另一个表中提取它?

【问题讨论】:

【参考方案1】:

您对自己的数据做出了很多假设,并在完成处理后让资源保持开放状态。

首先,您应该使用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.sql.SQLException: [Microsoft][ODBC Driver Manager] Invalid descriptor index

以上是关于从AccessDB中提取数据的问题[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

从 Excel 中提取数据到 Access 数据库

从 MS Access 数据库中提取源代码

从pdf中提取数据到表格中[关闭]

如何将数据库从 MS access 2007 导出到 MySQL? [关闭]

使用模式从字符串中提取数据[关闭]

使用 Java 从 Web 中提取数据 [关闭]