Enum com Banco de Dados

7 respostas
ricardocomp

Olá Pessoal,
eu estou com uma dúvida aqui e não estou conseguindo
fazer o meu trabalho

quando eu tenho por exemplo:

package model.BaseDados;

enum TipoUsuario{
    PRODUTOR, TECNICO;
}
/**
 *
 * @author Ricardo Ramos
 */
public class UsuarioSistema {

    private int idUsuario;
    private String login;
    private String password;

    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }

    public String getLogin() {
        return login;
    }

    public void setLogin(String login) {
        this.login = login;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

}
public void salvarProdutor(Produtor produtor) throws LAFQADaoException {

		PreparedStatement ps = null;
		Connection conn = null;

		if (produtor == null)
			throw new LAFQADaoException("o valor passado não pode ser lido");

		try {
			String sql = "insert into produtor(login, password, tipo, " +
                                "nome, rua, numero, bairro, cidade, estado, cep, " +
                                "uf, telefone, celular, email, cnpj, listaSolicitacoes)"
				+ "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
			conn = this.conn;
			ps = conn.prepareStatement(sql);
			ps.setString(1, produtor.getUsuario().getLogin());
                        ps.setString(2, produtor.getUsuario().getPassword());
                        //Preciso pegar o Enum da Classe UsuarioSistema.java Como fazer???
                        ps.setString(3, produtor.getUsuario().);
                        ps.setString(4, produtor.getNome());
			ps.setString(5, produtor.getEndereco().getRua());
                        ps.setInt(6, produtor.getEndereco().getNumero());
                        ps.setString(7, produtor.getEndereco().getBairro());
                        ps.setString(8, produtor.getEndereco().getCidade());
                        ps.setString(9, produtor.getEndereco().getEstado());
                        ps.setString(10, produtor.getEndereco().getCep());
                        ps.setString(11, produtor.getEndereco().getUf());
                        ps.setString(12, produtor.getTelefone());
                        ps.setString(13, produtor.getCelular());
                        ps.setString(14, produtor.getEmail());
                        ps.setString(15, produtor.getCnpj());
                        ps.setObject(16, produtor.getListaSolicitacoes());
			ps.executeUpdate();
		} catch (Exception sqle) {
			throw new LAFQADaoException("Erro ao inserir dados" + sqle);

		} finally {
                    try {
                        ConnectionFactory.closeconnection(conn, ps);
                    } catch (SQLException ex) {
                        Logger.getLogger(ProdutorDao.class.getName()).log(Level.SEVERE, null, ex);
                    }
		}
	}

Será que alguém poderia me ajudar?

[]'s.

7 Respostas

ricardocomp

Eu preciso pegar o Enum da Classe UsuarioSistema.java mas não sei como fazer isso???
Será que alguém poderia me dar uma ajuda?

[]'s.

felipehand

Declara o enum como publico e importa a classe.

felipehand

Mas sinceramente, eu to achando meio feio esse enum ai.
Acho que vc poderia criar ele publico e estatico dentro da sua classe.
Ou vc poe ele publico sozinho separado em outra classe.

Mas pra usar mesmo, declara como publico e importa o pacote.
[]'s

ricardocomp

Jóia Felipe?
Eu fiz do jeito que vc me falou

public class UsuarioSistema {

    private int idUsuario;
    private String login;
    private String password;

    public static enum TipoUsuario{
        PRODUTOR, TECNICO;
    }
    
    public int getIdUsuario() {
        return idUsuario;
    }

    public void setIdUsuario(int idUsuario) {
        this.idUsuario = idUsuario;
    }
...

Mas agora como que eu faço para usá-lo?
Eu teria que criar os métodos get e set?
[]'s.

felipehand

Nao maninho, na classe que esta escrevendo o metodo “salvarProdutor” voce importa o pacote da classe “UsuarioSistema”.
Se estiverem no mesmo pacote nem precisa.
ai no código vc faz assim :

public void salvarProdutor(Produtor produtor) throws LAFQADaoException {   
  
        PreparedStatement ps = null;   
        Connection conn = null;   
  
        if (produtor == null)   
            throw new LAFQADaoException("o valor passado não pode ser lido");   
  
        try {   
            String sql = "insert into produtor(login, password, tipo, " +   
                                "nome, rua, numero, bairro, cidade, estado, cep, " +   
                                "uf, telefone, celular, email, cnpj, listaSolicitacoes)"   
                + "values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";   
            conn = this.conn;   
            ps = conn.prepareStatement(sql);   
            ps.setString(1, produtor.getUsuario().getLogin());   
                        ps.setString(2, produtor.getUsuario().getPassword());                             
                        ps.setString(3, UsuarioSistema.TipoUsuario.TECNICO);   
                        ps.setString(4, produtor.getNome());   
            ps.setString(5, produtor.getEndereco().getRua());   
                        ps.setInt(6, produtor.getEndereco().getNumero());   
                        ps.setString(7, produtor.getEndereco().getBairro());   
                        ps.setString(8, produtor.getEndereco().getCidade());   
                        ps.setString(9, produtor.getEndereco().getEstado());   
                        ps.setString(10, produtor.getEndereco().getCep());   
                        ps.setString(11, produtor.getEndereco().getUf());   
                        ps.setString(12, produtor.getTelefone());   
                        ps.setString(13, produtor.getCelular());   
                        ps.setString(14, produtor.getEmail());   
                        ps.setString(15, produtor.getCnpj());   
                        ps.setObject(16, produtor.getListaSolicitacoes());   
            ps.executeUpdate();   
        } catch (Exception sqle) {   
            throw new LAFQADaoException("Erro ao inserir dados" + sqle);   
  
        } finally {   
                    try {   
                        ConnectionFactory.closeconnection(conn, ps);   
                    } catch (SQLException ex) {   
                        Logger.getLogger(ProdutorDao.class.getName()).log(Level.SEVERE, null, ex);   
                    }   
        }   
    }
ricardocomp

Jóia Felipe?
acho que só faltou o chamar o método toString no final
eu fiz desse jeito:

ps.setString(3, UsuarioSistema.TipoUsuario.PRODUTOR.toString());

agora deu certo Felipe. :smiley:
Muito Obrigado msm.
Abraço.

ricardo13

olá,

Tenho uma dúvida.

Na sua SQL de inserção você coloca no último parâmetro uma lista de solicitações.
Como você mapeou isso para o BD ??? Você tem uma tabela Solicitação ?? é uma relação 1-N ??

Ricardo

Criado 16 de setembro de 2009
Ultima resposta 14 de jul. de 2010
Respostas 7
Participantes 3