Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从AccessDB中提取数据时出现问题_Java_Swing_Jdbc_Jtable - Fatal编程技术网

Java 从AccessDB中提取数据时出现问题

Java 从AccessDB中提取数据时出现问题,java,swing,jdbc,jtable,Java,Swing,Jdbc,Jtable,我试图从access db中提取数据,并用以下代码填充 String[] tableColumnsName = {"col 1","col 2","col 3"}; DefaultTableModel aModel = (DefaultTableModel) jTable2.getModel(); aModel.setColumnIdentifiers(tableColumnsName); try { // the query r

我试图从access db中提取数据,并用以下代码填充

    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
String[]tableColumnsName={“第1列”、“第2列”、“第3列”};
DefaultTableModel aModel=(DefaultTableModel)jTable2.getModel();
aModel.setColumnIdentifiers(tableColumnsName);
试一试{
//询问
rs=db.query(“从学生中选择*);
}catch(SQLException-ex){
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE,null,ex);
}
//循环遍历结果集并在模型中传输
java.sql.ResultSetMetaData rsmd=null;
试一试{
rsmd=rs.getMetaData();
}catch(SQLException-ex){
Logger.getLogger(RegisterGUI.class.getName()).log(Level.SEVERE,null,ex);
}
//int colNo=rsmd.getColumnCount();
试一试{
while(rs.next()){
Object[]objects=新对象[10];
//坦克到umit ozkan进行错误修复!

对于(inti=0;i,您正在对数据进行大量假设,并在使用完资源后将其保留为打开状态

首先,您应该使用
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);
DefaultTableModel aModel=新的DefaultTableModel();
try(ResultSet rs=db.query(“从学生中选择*)){
ResultSetMetaData rsmd=rs.getMetaData();
for(int col=0;col

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

我得到一个错误java.sql.SQLException:[Microsoft][ODBC Driver Manager]无效的描述符索引