Я новичок в Java и мой пример того, что я пытаюсь выполнить, это структура ColdFusion. Используя следующую структуру данных в качестве примера.Заполнение многомерных массивов Java
id color
50 blue
60 red
70 green
80 yellow
Я хочу создать многомерный массив Java из запроса resultSet, который выглядит следующим образом.
1 id 50
color blue
2 id 60
color red
3 id 70
color green
4 id 80
color yellow
Моя цель - использовать возвращенный массив для заполнения страницы JSP данными. Я пытаюсь разрешить моему коду учитывать количество строк, возвращаемых запросом. Мой текущий код выглядит следующим образом.
private static String[][][] query(Connection connection) throws SQLException{
Statement statement = connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet resultSet = statement.executeQuery("SELECT colors.id,colors.color FROM colors");
int size;
resultSet.last();
size = resultSet.getRow();
resultSet.beforeFirst();
ResultSetMetaData rsltmetadata = resultSet.getMetaData();
int colCount = rsltmetadata.getColumnCount();
String[][][] rlstSetArray = new String[size][colCount][];
int m = 0;
while(resultSet.next()) {
++m;
for (int j=1; j <= colCount; j++){
System.out.println(m);
System.out.println(rsltmetadata.getColumnName(j));
System.out.println(resultSet.getString(rsltmetadata.getColumnName(j)));
}
}
}
Этот код выдает это.
1
id
50
1
color
blue
2
id
60
2
color
red
и т.д ...
На месте трех System.out.println линий испробованы следующие параметры и получить такое же сообщение от NetBeans 8.1. 'несовместимые типы: Строка не может быть преобразована в int'
rlstSetArray[m][rsltmetadata.getColumnName(j)] = resultSet.getString(rsltmetadata.getColumnName(j));
rlstSetArray[m][rsltmetadata.getColumnName(j)] = "'" + resultSet.getString(rsltmetadata.getColumnName(j)) + "'";
rlstSetArray[m]["'" + rsltmetadata.getColumnName(j) + "'"] = resultSet.getString(rsltmetadata.getColumnName(j));
Что вызывает это сообщение?
Позволяет ли я получать данные из массива в JSP, используя имена столбцов, которые находятся во втором измерении массива?
(Edit) Ошибка в том, что вы используете массив как структуры. Массивы должны ссылаться на индекс * number *, т. Е. Как этот '[0] [1]' not '[0] [" columnName "]'. Кроме того, не забывайте, что java-массивы основаны на 0, а не на основе 1. (Обратите внимание, что не имеет никакого отношения к вашему вопросу, но не забудьте закрыть все утверждения, результаты, соединения и т. Д., Когда закончите, чтобы предотвратить утечку памяти). – Leigh
Спасибо, что помогает мне вместе с другими комментариями. Когда у меня будет работа, я вернусь, чтобы проверить ответ, который работает для меня. – dutchlab