结果集获取单个列中的所有行值

Result Set Get all row values in a single column

我现在正在编写一个测试,我需要将一些数据库结果与 UI table 在 Java 中使用 Selenium 进行比较。我的 UI 结果以 ArrayList 格式到达。我的控制台告诉我结果类似于“[27002, 55691, 58716, 95362]”。这工作正常。

我有另一个 class,它对我的​​数据库进行 JDBC 调用以获得预期结果。我正在使用 ResultSet 方法来获取这些值。我的代码如下所示: (注意:我的 JDBC 连接等是在我将 SQL 查询传递给的方法 "runQuery" 中处理的)

public ArrayList queryForTPOSMembersByHospital() throws SQLException {

    String strQueryText = "select distinct _Member_Number and rest of query here that returns one column of results and 4 rows of data";

    ResultSet rs = runQuery(strQueryText);

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

    while (rs.next()) {

        memberNos.add(rs.getString("_Member_Number"));

        return memberNos;
    }

    return null;

    }

但是当我输出 memberNos 时,我只得到一个值 [27002] 而不是我期望的 4。

我在想我是否需要做一些类似 memberNos.addAll 的事情?而不是 memberNos.add?围绕这种方法尝试了一些事情,但还没有得到任何运气。

因为你是在while循环里面返回,所以你的代码应该是

while (rs.next()) {

    memberNos.add(rs.getString("_Member_Number"));
}
return memberNos

您的方法应该 return 类型为 ArrayList 的数据,以便从您的代码中删除 return 语句,并且 return memberNos 如下所示:

public ArrayList queryForTPOSMembersByHospital() throws SQLException {
    String strQueryText = "select distinct _Member_Number and rest of query here that returns one column of results and 4 rows of data";
    ResultSet rs = runQuery(strQueryText);
    ArrayList<String> memberNos = new ArrayList<String>();
    while (rs.next()) {
        memberNos.add(rs.getString("_Member_Number"));
    }
    return memberNos;

    }

试试这个代码:

  public ArrayList queryForTPOSMembersByHospital() throws SQLException {
    String strQueryText = "select distinct _Member_Number and rest of query here that returns one column of results and 4 rows of data";
    ResultSet rs = runQuery(strQueryText);
    ArrayList < String > memberNos = new ArrayList < String > ();
    while (rs.next()) {
     memberNos.add(rs.getString("_Member_Number"));
    }
   return memberNos;
 }

您是从 while 循环返回的,这就是为什么您只得到一个值的原因。