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