0

我有一个非常介绍性的问题,我希望可以很容易地得到回答。

目前我正在尝试编写一些查询我的数据库、返回结果集(帐户 ID 列表)然后将这些帐户 ID 设置为数组的内容,以便我可以使用这些值填充对象。

我的对象将用作我编写的另一个方法的输入,但我不知道如何使用我在结果集中返回的数组中的值填充我的 account_id 字段。由于我的 String 类型数组缺少更好的术语,似乎没有任何“setter”方法。

我能够让数组填充结果集中的 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");

}  
4

4 回答 4

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);            

    }

现在您拥有 GetSummaryRequest 的 ArrayList 和每个对象的 accountKey。

于 2013-09-30T17:08:06.770 回答
0
  1. 首先,将换行符分隔的值存储在一列中不是一个好习惯。这违反了原子性原则,很快就会给你带来问题——例如,账户总数?你是怎么找到它的?

  2. 一旦你说服了自己,你就可以像这样只使用一个循环

    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; 
    
于 2013-09-30T17:00:30.047 回答
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;
}
于 2013-09-30T17:01:28.693 回答
0

如果我理解正确 accountkey 是整数,对吗?您可以使用 Integer.parseint('your string!') 类将字符串转换为 int。我希望它有帮助

于 2013-09-30T16:55:42.533 回答