我正在编写一个测试,我需要在Java中使用Selenium将一些数据库结果与UI表进行比较。我的UI结果以ArrayList格式到达。我的控制台告诉我,结果看起来像" [27002,55691,58716,95362]"。这很好。
我有另一个类对我的数据库进行JDBC调用以获得预期的结果。我使用ResultSet方法来获取这些值。我的代码如下所示: (注意:我的JDBC连接等在方法" runQuery&#34中处理;我将SQL查询传递到其中)
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],而不是我期待的那个。
我认为我需要做一些像memberNos.add这样的事情吗?而不是memberNos.add?试过这个方法的一些事情,但还没有运气。
答案 0 :(得分:2)
这是因为你在循环中返回内部,你的代码应该是
while (rs.next()) {
memberNos.add(rs.getString("_Member_Number"));
}
return memberNos
答案 1 :(得分:1)
您的方法应返回类型为ArrayList
的数据,以便从代码中删除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;
}
答案 2 :(得分:1)
试试这段代码:
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循环返回的,这就是为什么你只得到一个值。