我有一个很好的介绍性问题,我希望能够很容易地得到答案。
目前我正在尝试编写查询我的数据库的内容,返回结果集(帐户ID列表),然后将这些帐户ID设置为数组,以便我可以使用值填充对象。
我的对象将被用作我编写的另一个方法的输入,但我无法弄清楚如何使用我在结果集中返回的数组中的值填充我的account_id字段。似乎没有任何“setter”方法在我的String类型数组上缺少一个更好的术语。
我能够从结果集中使用acct_id填充数组并将其打印出来,因此我知道我确实有信息可以回来。
以下是我目前所拥有的代码段,我所能提供的任何帮助/改进都将非常感谢!
try {
connection = DriverManager.getConnection(url, user, password);
st = connection.createStatement();
rs = st.executeQuery(sql);
List<Long> array = new ArrayList<Long>();
while (rs.next()) {
array.add((long) rs.getLong("acct_id"));
for (Integer i = 0; i < array.size(); i++) {
System.out.println(array.get(i));
GetSummaryRequest request = new GetSummaryRequest();
request.accountKey = new AccountDTO(array[i]);
}
}
} catch (SQLException e) {
System.out.println("Connection failed.");
e.printStackTrace();
return;
}
if (rs.next()) {
System.out.println(rs.getString(1));
} else
System.out.print("Failed. Try again");
}
答案 0 :(得分:1)
如果我的理解是正确的,您可能需要下面的代码用于存储数组中的所有帐户ID,您可以使用它作为参数传递给另一个方法。
ArrayList<GetSummaryRequest> array1=new ArrayList<GetSummaryRequest>();
GetSummaryRequest request = new GetSummaryRequest();
while (rs.next())
{
request=new GetSummaryRequest();
request.accountKey=rs.getString("acct_id");
array1.add(request);
}
现在,每个对象都有一个带有accountKey的GetSummaryRequest ArrayList。
答案 1 :(得分:0)
如果我理解正确,accountkey是整数对吗? 您可以使用Integer.parseint('your string!')类将字符串转换为int。 我希望它有所帮助
答案 2 :(得分:0)
首先,将换行符分隔值存储在一列中并不是一个好习惯。这违反了原子性原则,很快就会引发问题 - 例如,帐户总数?你怎么找到的?
一旦你用这个说服自己,你就可以只使用一个这样的循环
List<GetSummaryRequest> summaryRequests = new ArrayList<GetSummaryRequest>();
while (rs.next()) {
String em = rs.getString("acct_id");
GetSummaryRequest request = new GetSummaryRequest();
request.accountKey = em;
summaryRequests.add(request);
}
return summaryRequests;
答案 3 :(得分:0)
可能你需要这样的东西:
// First you get all ids
List<String> accountsIds = new ArrayList<String>();
while (rs.next()) {
accountsIds.add(rs.getString("acct_id"));
}
// Then iterate ids
for (String id : accountsIds) {
GetSummaryRequest request = new GetSummaryRequest();
request.accountKey = id;
}