Java中,MySQL的方法,返回结果集暧昧作为ArrayList

问题描述 投票:0回答:3

我工作的任务,但我通过这个任务的措辞混淆:

“添加名为GetData方法,它接受的SqlString和字段的数量。的getData应执行已传递查询,然后转换成结果集以简单的2 d的ArrayList”。

以下是我迄今为止...

public ArrayList<ArrayList<String>> getData(String sqlString, int numFields){
    Statement stmnt= this.conn.createStatement();

    ResultSet rs = stmnt.executeQuery(sqlString);
    ArrayList<ArrayList<String>> ary = new ArrayList();
    int row = 0;
    while (rs.next()){ // Get next row
        for (int i = 1; i <= numFields; i++) { // each column
            ary[row][i-1] = rs.getString(i);
        }
        row++;
    }
    return ary;
}

我发现了一个错误error: array required, but ArrayList<ArrayList<String>> found

ary[row][i-1] = rs.getString(i);
   ^

预先感谢您的帮助和阅读。

编辑:我相信这是最后的/正确的/工作版本,这要感谢其他真棒用户:)现在jGrasp只是在我吼约捕获异常提供的答案。我很欣赏的帮助!

public ArrayList<ArrayList<String>> getData(String sqlString, int numFields){
    Statement stmnt= this.conn.createStatement();

    ResultSet rs = stmnt.executeQuery(sqlString);
    ArrayList<ArrayList<String>> ary = new ArrayList<>();

    while (rs.next()){   // Get next row
        ArrayList<String> columnsList = new ArrayList<>();
        for (int i = 1; i <= numFields; i++) { // each column
            columnsList.add(rs.getString(i));
            // Add the list of columns to our list of rows
            ary.add(columnsList);
        }
    }
    return ary;
}
java mysql jdbc
3个回答
1
投票

您需要使用get()方法从一个ArrayList特定指数来获得的元素。不能使用[]在一个特定的指数,以获得元素,在一个ArrayList。它仅适用于数组和你的resultSet可能不是一个数组,而是一个ArrayList。您可以添加到下面的ArrayList代替阵列,

ArrayList<ArrayList<String>> ary = new ArrayList();
    int row = 0;
    while (rs.next()){ // Get next row
    ArrayList<String> columns = new ArrayList<>();
        for (int i = 1; i <= numFields; i++) { // each column
            columns.add(rs.getString(i));
        }
        ary.add(columns)
  }

而他们使用的方法get()名单上检索。


1
投票

你可以把2D ArrayList为一的“名单表”。因此,作为卡尔蒂克在评论中提到的,你会宣称它是这样的:

ArrayList<ArrayList<String>> rows = new ArrayList<>();

现在,你有你的基地List,您可以创建并添加新的,以该基地名单:

while (rs.next()){   // Get next row
    ArrayList<String> columnsList = new ArrayList<>();
    for (int i = 1; i <= numFields; i++) { // each column
        columnsList.add(rs.getString(i));
        // Add the list of columns to our list of rows
        rows.add(columnsList);
    }
}
return rows;

0
投票

你可以这样做平凡使用Apache DbUtils

public ArrayList<ArrayList<String>> getData(String sqlString, int numFields){ // numFields unnecessary
    QueryRunner run = new QueryRunner();
    List ret = new ArrayList();
    ret.addAll(run.query(conn, sqlString));
    DbUtils.close(conn);
    return ret;
}
© www.soinside.com 2019 - 2024. All rights reserved.