我正在使用返回输出的JDBC查询,如下所示:
Name Id
A 1
B 2
然后我尝试使用以下java类基于查询结果生成arrylist:
private class GetCompanyInfo implements Work {
ArrayList<CompanyRelatedInfo> companyRelatedDataList = new ArrayList<CompanyRelatedInfo>();
private String queryString;
@Override
public void execute(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(queryString);
ResultSet rs = ps.executeQuery();
CompanyRelatedInfo ci = new CompanyRelatedInfo();
while(rs.next())
{
String name = rs.getString("name");
Long id = rs.getLong("id");
ci.setName(name);
ci.setId(id);
companyRelatedDataList.add(ci);
}
rs.close();
ps.close();
}
}
但问题是arraylist返回结果如下:
Name Id
B 2
B 2
如何生成arraylist如下:
Name Id
A 1
B 2
答案 0 :(得分:3)
创建CompanyRelatedInfo的新实例,而不是使用相同的实例。您只需修改所有行的同一个对象,并将其多次放入列表中。因此,请尝试使用以下内容:
while(rs.next()) {
CompanyRelatedInfo ci = new CompanyRelatedInfo();
...