Fórum Trazer informação de Enum pelo resultSet #535024
20/10/2015
0
Bom dia.
Sou novo aqui no fórum e também na programação.
Estou tentando terminar o método getById(), que busca informações do banco de dados.
Só que não sei como buscar informações de um Enum. Como eu faço?
O trecho:
não funciona dessa maneira como para os outros atributos, pois Sexo é um enum.
Sou novo aqui no fórum e também na programação.
Estou tentando terminar o método getById(), que busca informações do banco de dados.
Só que não sei como buscar informações de um Enum. Como eu faço?
@Override
public Pessoa getById(long id) {
Pessoa p = null;
try{
p = new Pessoa();
Statement sta = connection.createStatement();
ResultSet elements = sta.executeQuery("SELECT * from pessoa where id = " + id);
if (elements != null){
elements.first();
p.setNome(elements.getString("nome")); //o que está entre aspas é o nome da coluna do BD
p.setSalario(elements.getDouble("salario"));
p.setFuncoes(elements.getString("funcoes"));
p.setEmail(elements.getString("email"));
p.setDataNascimento(elements.getDate("dataNascimento"));
p.setSexo(elements.getSexo("sexo"));
}
} catch (SQLException ex){
ex.printStackTrace();
} finally {
conexao.fecharConexao();
}
return l;
}O trecho:
p.setSexo(elements.getSexo("sexo"));não funciona dessa maneira como para os outros atributos, pois Sexo é um enum.
Fabricio Cani
Curtir tópico
+ 0
Responder
Post mais votado
20/10/2015
Boa Tarde,
No seu Enum crie um método que receba uma String e compare essa String com os elementos do enum,
Segue um exemplo
estou assumindo que o seu banco guarde a string "MASCULINO" e "FEMININO" caso guarde de maneira diferente basta alterar o método no seu enum.
e seu código teria a seguinte alteração
No seu Enum crie um método que receba uma String e compare essa String com os elementos do enum,
Segue um exemplo
public enum Sexo{
MASCULINO,
FEMININO;
public static Sexo getSexo(String sexo){
for(Sexo sex:Sexo.values()){
if(sex.toString().equals(sexo.toUpperCase())){
return sex;
}
}
return null;
}
}
estou assumindo que o seu banco guarde a string "MASCULINO" e "FEMININO" caso guarde de maneira diferente basta alterar o método no seu enum.
e seu código teria a seguinte alteração
public Pessoa getById(long id) {
Pessoa p = null;
try{
p = new Pessoa();
Statement sta = connection.createStatement();
ResultSet elements = sta.executeQuery("SELECT * from pessoa where id = " + id);
if (elements != null){
elements.first();
p.setNome(elements.getString("nome")); //o que está entre aspas é o nome da coluna do BD
p.setSalario(elements.getDouble("salario"));
p.setFuncoes(elements.getString("funcoes"));
p.setEmail(elements.getString("email"));
p.setDataNascimento(elements.getDate("dataNascimento"));
p.setSexo(Sexo.getSexo(elements.getString("sexo")));
}
} catch (SQLException ex){
ex.printStackTrace();
} finally {
conexao.fecharConexao();
}
return l;
}
Robson Teixeira
Responder
Gostei + 2
Mais Posts
22/10/2015
Fabricio Cani
Beleza fera, funcionou certinho.
Obrigado
Obrigado
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)