基本上我试图通过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));
}
}
}
有人可以建议我错在哪里。