Estou com uma pequena dúvida quanto a array de objetos. Por exemplo eu tenho JavaBeans para armazenar dados que vem do meu database. Quando executo um select que me retorna vários registros armazeno o resultado em um array de JavaBeans.
MyObjeto[]objs=pStatement.executeQuery(sql);
Esse é a forma mais utilizada ou existem outras formas?
Ao inves de array, experimente usar a framework de collections que já vem no j2sdk.
Veja um exemplo abaixo
publicArrayListgetUserList()throwsSQLException{Connectionconn=null;PreparedStatementstmt=null;ResultSetrs=null;LinkedListusers=newLinkedList();try{conn=getConnection();stmt=conn.prepareStatement("select * from usuario");rs=stmt.executeQuery();while(rs.next()){UserDatauser=newUserData();user.setIdUsuario(rs.getInt("id_usuario"));user.setNome(rs.getString("nome"));user.setLogin(rs.getString("login"));user.setSenha(rs.getString("senha"));user.setSexo(rs.getString("sexo"));user.setAtivo(rs.getBoolean("ativo"));user.setFaixaIdade(rs.getInt("faixa_idade"));users.add(user);}}catch(SQLExceptione){throwe;}finally{closeConnection(conn,stmt,rs);}returnusers;}
[]s, Welington B. Souza
maresp
No código eu percebí que a instrução
UserDatauser=newUserData()
fica dentro do laço while. Tentei colocar essa instrução antes do laço e dentro do laço eu simplesmente iria substituindo o valor do meu objeto
UserData user = new UserData();
while (rs.next()) {
user.setIdUsuario(rs.getInt("id_usuario"));
user.setNome(rs.getString("nome"));
user.setLogin(rs.getString("login"));
user.setSenha(rs.getString("senha"));
user.setSexo(rs.getString("sexo"));
user.setAtivo(rs.getBoolean("ativo"));
user.setFaixaIdade(rs.getInt("faixa_idade"));
users.add(user);
}
Mas fazendo isso eu percebí que os valores não são atualizados, tendo uma lista de registros repetidos (sempre o último que retornou do select). Alguém sabe me dizer por quê?
urubatan
por que tu só criou um userdata e foi alterando os valores dele,
pode até utilizar a mesma variavel, mas o new tem que estar dentro do loop