Я получаю 3 столбца для каждой строки из таблицы mysql с помощью ResultSet. Я не уверен в количестве строк, которые я получу, используя запрос. Чтобы сохранить эти строки, я использую ArrayList
качестве приведенного ниже кода:
while (rs.next())
{
String[] row = new String[numcols];
for (int i = 0; i < numcols; i++)
{
row[i] = rs.getString(i + 1);
}
rowsList.add(row);
}
rs.close();
Когда я отлаживал код, я обнаружил, что значения столбцов присутствуют в ArrayList
. Теперь я не могу получить доступ к значениям столбцов, потому что rowsList.get(index)
будет возвращать только значение по определенному индексу, но у меня есть еще 3 значения в этом индексе, как получить доступ к этим значениям.
List.get()
в вашем случае возвращает String
массив: String[]
. Вы можете получить доступ к элементам массива с помощью операторов индекса []
:
String[] row = rowList.get(0);
for (int i = 0; i < row.length; i++)
System.out.println(row[i]);
// Or you can use the enhanced for to loop through the array:
for (String s : row)
System.out.println(s);
Если вы хотите обработать все строки:
for (String[] row : rowList) {
// Process row
for (String s : row) {
// Do something with the string
}
}
Я хотел бы предложить вам узнать о List.
А второй - создать класс, содержащий все, что исходит из вашего запроса.
И, наконец, сохраните каждый объект класса в массиве.
пример
Предположим, что вы получили идентификаторы, столбцы имен и адресов из вашего запроса
Создать класс
public class YourClass{
int id;
String name, address;
//create getters and setters or use a constructor
//example of setter to set field id
public void setId(int id){
this.id = id;
}
}
А затем, извлекая записи из запроса, создайте объект своего класса и задайте столбцы как поле своего класса следующим образом:
YourClass anObject = new YourClass();
anObject.setId(id);// get similar columns from query
anObject.setName(name);
И, наконец, добавьте объект в ArrayList, как показано ниже:
yourArrayList.add(anObject);
Для того, чтобы заботиться о множественном числе записей, которые необходимо сохранить этот код внутри в while
петля и определить свой List
, прежде чем время цикла следующим образом:
List<YourClass> yourArrayList = new ArrayList<YourClass>();
И я думаю, что это лучший подход, поскольку он использует ООП, который вы должны начать использовать вместо использования голого массива.
вы хотите указать, какой объект находится в списке. для этого сделайте List
List<String[]> rowsList = new ArrayList<String[]>();
затем использовать while
цикл
while (rs.next())
{
String[] row = new String[numcols];
for (int i = 0; i < numcols; i++)
{
row[i] = rs.getString(i + 1);
}
rowsList.add(row);
}
rs.close();
когда вы обращаетесь к каждому элементу в списке, он всегда возвращает String[]
которую вы можете перебирать, чтобы получить значения.
for(int i = 0 ; i< rowsList.size() ; i++){
rowsList.get(i);//will return a String[]
}
ИЛИ
for(String[] rows : rowsList){
//iterate the rows
}
String colValue=rowsList.get(rowIndex)[columnIndex];