Java设置数组值然后循环并将对象字段设置为等于数组值

时间:2013-09-30 16:47:27

标签: java arrays object

我有一个很好的介绍性问题,我希望能够很容易地得到答案。

目前我正在尝试编写查询我的数据库的内容,返回结果集(帐户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");

}  

4 个答案:

答案 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)

  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; 
    

答案 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;
}