我使用ResultSet从mysql表中获取每行3列。我不确定使用查询得到的行数。要存储这些行,我使用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个值如何访问这些值。
答案 0 :(得分: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
}
}
答案 1 :(得分:2)
我建议您了解List。
第二个是创建一个类,其中包含来自查询的所有内容。
最后将类的每个对象保存到数组中。
示例强>
假设您从查询中获得 ID ,名称和地址列
创建课程
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
循环中
并在while循环之前定义List
,如下所示:
List<YourClass> yourArrayList = new ArrayList<YourClass>();
我认为这是最佳方法,因为它使用OOP而不是使用裸阵列。
答案 2 :(得分:1)
您需要指定列表中的对象。要实现这一目标,请将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
}