迭代metadata.getColumnCount()

时间:2015-06-24 14:46:37

标签: java sql indexoutofboundsexception jexcelapi

基本上我试图通过jexel读取excel表中的多个查询,我将单元格内容添加到hashmap中的Key和Value。例如

  

A1 = 1(关键),A2 = 2 ....

     

B1 =“SELECT * FROM ABCD;” (值),B2 =“SELECT * FROM XYZ;”

Map<String, String> hashmap = new HashMap<String, String>();
for (int i=0;i<rowCount;i++) {
    Cell rowObj1 =sheet.getCell(0, i);      
    Cell rowObj2 = sheet.getCell(1, i);
    sql =rowObj2.getContents();
    hashmap.put(rowObj1.getContents(), rowObj2.getContents());
}

稍后我通过在exel表上迭代rowCount从hashmap获取SQL。 然后我将所有SQL结果集添加到数组列表中 最后我迭代数组列表大小以获取单个记录集,同时获取记录集的元数据。

但问题是我得到了

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at java.util.ArrayList.elementData(ArrayList.java:418)
at java.util.ArrayList.get(ArrayList.java:431)
at com.bmc.arsys.jdbc.core.ResultSetMetaData.getColumnCount(ResultSetMetaData.java:47)

int ColCount = metadata1.getColumnCount();

这是代码段

ArrayList<ResultSet> arraylist = new ArrayList<ResultSet>();
int i;
String y;
for (i=1;i<=rowCount;i++){
    y = Integer.toString(i);
    sql =hashmap.get(y);
    rs  = st.executeQuery(sql);
    arraylist.add(rs);
    System.out.println(sql);
}

System.out.println("Array List Size "+arraylist.size());
for (int j=0;j<arraylist.size();j++){
    ResultSet rs1= arraylist.get(j);
    System.out.println("Record Set "+rs1);

    ResultSetMetaData metadata1 = rs1.getMetaData();
    System.out.println("Meta Data "+metadata1);
    int ColCount = metadata1.getColumnCount();
    System.out.println(ColCount);

    int k;
    for (k=1;k<ColCount;k++) {
        System.out.println("Record_Set "+rs1);
        while(rs1.next()) {
            System.out.println(rs1.getString(k));
        }   
    }
}

有人可以建议我错在哪里。

0 个答案:

没有答案