Trazer informação de Enum pelo resultSet
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
Curtidas 0
Melhor post
Robson Teixeira
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; }
GOSTEI 2
Mais Respostas
Fabricio Cani
20/10/2015
Beleza fera, funcionou certinho.
Obrigado
Obrigado
GOSTEI 0