Ola pessoal
eu tenho o seguinte metodo
[code] public List getEmailPorParametro(int pessoaId, int emailId)throws Exception {
Connection conn = null;
ResultSet rs = null;
String sql = BUSCA_POR_PARAMETRO;
List listaEmail = new ArrayList();
try {
conn = GerenciadorConexao.getConexao();
CallableStatement clblStmt = conn.prepareCall(sql);
clblStmt.setInt(1,pessoaId);
clblStmt.setInt(2,emailId);
rs = clblStmt.executeQuery();
while (rs.next()) {
Email email = new Email();
email.setId(rs.getInt("EmailID"));
email.setDescr(rs.getString("EmailDescr"));
email.setTipoId(email.getTipoId().getContatoTipoPorId(rs.getString("EmailContatoTipoID")));
listaEmail.add(email);
}
} catch (Exception e) {
throw new Exception(e);
}
return listaEmail;
}[/code]
ate ai, esse codigo funciona normal, da forma que tem que ser, porem, eu pensei em criar o objeto email antes do loop ao invez de criar toda vez que rodar o loop (acho que assim consome menos memoria do servidor, estou correto?), para assim, nao ficar criando o objeto toda hora, entao fiz dessa maneira
[code] public List getEmailPorParametro(int pessoaId, int emailId)throws Exception {
Connection conn = null;
ResultSet rs = null;
String sql = BUSCA_POR_PARAMETRO;
List listaEmail = new ArrayList();
Email email = new Email();
try {
conn = GerenciadorConexao.getConexao();
CallableStatement clblStmt = conn.prepareCall(sql);
clblStmt.setInt(1,pessoaId);
clblStmt.setInt(2,emailId);
rs = clblStmt.executeQuery();
while (rs.next()) {
email.setId(rs.getInt("EmailID"));
email.setDescr(rs.getString("EmailDescr"));
email.setTipoId(email.getTipoId().getContatoTipoPorId(rs.getString("EmailContatoTipoID")));
listaEmail.add(email);
}
} catch (Exception e) {
throw new Exception(e);
}
return listaEmail;
}[/code]
porem, dessa forma ele me retorna o numero certo de linhas que vem do banco, mas tudo igual(sempre o ultimo registro), fazendo essa alteracao ele nao deveria adicionar o valor ao “listaEmail” e quando voltar ao loop sobre-escrever os valores e adicionar o valor novo?
é isso mesmo ou fiz algo errado?
abs
T+