数组越界除了..从mysql表创建多维数组

时间:2014-04-19 22:57:40

标签: java mysql arrays multidimensional-array

所以我一直在尝试使用String[][]创建一个JDBC从数据库中提取项目但是还没有能够将结果导入String[][]我做错了我得到这个错误:

java.lang.ArrayIndexOutOfBoundsException: 4
    at modelo.ConectorBaseDatos.getRows_From_DB(ConectorBaseDatos.java:194)
    at modelo.ConectorBaseDatos.main(ConectorBaseDatos.java:237)

第194行是:

rows_list[rows][cols] = result.getString(2);

以下是代码:

public String[][] getRows_From_DB(String tableName, String db, String querY){

            try{

                    int columnCount = this.getTableInfo(tableName, db, true, false) - 1;
                    int rowCount =  this.getTableInfo(tableName, db, false, true) - 1;

                rows_list = new String[rowCount][columnCount];

                Connection con = getConnect_to_DB("fifa");

                PreparedStatement statement  = con.prepareStatement(querY);

                ResultSet result = statement.executeQuery();

                while(result.next()){

                         for(int rows = 1; rows <= rowCount; rows++){

                                for(int cols = 1; cols <= columnCount; cols ++){

                                        rows_list[rows][cols] = result.getString(2);
                                        rows_list[rows][cols] = result.getString(3);
                                        rows_list[rows][cols] = result.getString(4);
                                        rows_list[rows][cols] = result.getString(5);
                                }
                         }
                }




            }catch(Exception e){
                e.printStackTrace();
                JOptionPane.showMessageDialog(null, "Error en getRows_From_DB()" + e, "ERROR!", JOptionPane.ERROR_MESSAGE, null);
            }

    return rows_list;
}

1 个答案:

答案 0 :(得分:2)

有几个问题,在这里:

  • 启动索引为1而不是0(如Kon所述)
  • 您设置给定rows_list [rows] [cols] 4次(其中3次将替换实例)
  • 您可以对行进行双重迭代(结果集中返回一行,使用行计数时第二次。

请参阅下文,了解解决这些问题的解决方案:

  ...
  ResultSet result = statement.executeQuery();

  int rowNumber = 0    
  while(result.next()){
     //Alternatively iterate here in another loop through all columns.
     rows_list[rowNumber][0] = result.getString(2);
     rows_list[rowNumber][1] = result.getString(3);
     rows_list[rowNumber][2] = result.getString(4);
     rows_list[rowNumber][3] = result.getString(5);
  }
}catch(Exception e){
  ...