Вы можете использовать ResultSetMetaData
, чтобы определить количество и имена столбцов в вашем ResultSet
и справиться с этим таким образом.Однако обратите внимание, что изменение количества столбцов в базе данных - влияющее на ваш код - и обеспечение работоспособности кода не всегда может быть хорошей идеей.
Кроме того, обратите внимание, что вы перезаписываете значения в вашей карте вкаждая итерация цикла.Вы, вероятно, хотите добавить эти карты в какой-нибудь список?
Наконец, вам нужно убедиться, что ваши getString
методы не будут возвращать null
где-либо, в противном случае помещение их в карту вызовет исключение..
Statement select = conn.createStatement();
ResultSet result = select.executeQuery("SELECT * FROM D724933.ECOCHECKS WHERE ECO = '"+localeco+"' AND CHK_TOOL = '"+checknames[i]+"'");
ResultSetMetaData rsmd = result.getMetaData();
int numberOfColumns = rsmd.getColumnCount();
List data = new ArrayList<Map>();
Map mapp2;
while(result.next()) { // process results one row at a time
mapp2 = new HashMap<String, String>();
for(int i=1; i<=numberOfColumns; i++) {
mapp2.put(rsmd.getColumnName(i), rs.getString(i));
}
data.add(mapp2);
}