Como enviar um tipo String selecionado em um JCOMBOBOX para o Banco de Dados

5 respostas
D

Boa noite pessoal, estou com este problema. Preciso pegar um valor selecionado de duas combobox no meu Jframe e enviar para o banco de dados, primeiro criei um método para inserir, que chamo através de um Objeto no evento de um JButton mas não deu certo, como segue:

Método para inserir no banco de dados.

public void metodoInsere(int tp_codigo, String nome,  String nascimento,String rua, String bairro,String cep,
            String cidade,String estado, String profissao, String empregador, String cpf, String rg, String civil, String sexo, String mail, String data_cadastro, String inativo){
        comandosql = "insert into cad_pessoa (pes_tpe_codigo, pes_nome, pes_nascimento, pes_rua, pes_bairro, pes_cep, "
                + "pes_cidade, pes_estado, pes_profissao, pes_empregador, pes_cpf, pes_rg, pes_mail, pes_data_cadastro, pes_inativo  ) values"
                + "("+tp_codigo+",'" +nome+ "','"+nascimento+"','"+rua+"','"+bairro+"','"+cep+"',"
                + "'"+cidade+"','"+estado+"','"+profissao+"','"+empregador+"','" +cpf+ "','" +rg+ "','" +civil+ "','" +sexo+ "','" + mail + "','"+data_cadastro+"','"+inativo+"')";
                try {
            stmt.executeUpdate(comandosql);
                } catch (SQLException ex) {
            JOptionPane.showMessageDialog(null, ex.getMessage(), "ERRO", JOptionPane.ERROR_MESSAGE);
        }          }

Chamada do Método no evento:

private void BgravarActionPerformed(java.awt.event.ActionEvent evt) {
         
         Cad_pessoa PES = new Cad_pessoa();
         int cod= Integer.parseInt (txcodtppessoa.getText());
 
         PES.metodoInsere(cod,txnome.getText(), txdatanascimento.getDateFormatString(),txrua.getText(),txbairro.getText(),txcep.getText(),txcidade.getText(),txestado.getText(),
txprofissao.getText(),txempresa.getText(),txcpf.getText(), txrg.getText(),comboestadocivil.getSelectedItem(),combosexo.getSelectedItem(),txmail.getText(),txdatacadastro.getDateFormatString(),inativo.getText());
    }
Seria muito grato se alguém puder me ajudar!

5 Respostas

wagnerfrancisco

E qual o erro que está dando?

Não me leve a mal, mas está código está muito mal elaborado. O correto seria você ter um objeto que represente Pessoa, e não passar todos estes parâmetros pra lá e pra cá. Você tá usando métodos estáticos na classe Cad_pessoa, o que não é nada bom. Os nomes das variáveis/classes não obedecem a convenção do Java. Está utilizando concatenação de strings para montar o SQL, o que, além de propenso a erros, possibilita SQL Injection.

Enfim, em pouco tempo isto vira um inferno para manter.

B

Rapaz, como o wagner falou tenta da uma melhorada nesse teu codigo, no parametro do metodo passe o objeto nos values tente usar ("?,?,?") entre outras melhorias que podem ser feitas, quanto a tua duvida tenta colocar:

comboestadocivil.getSelectedItem().toString()

Era isso?

D

Valeu ai pelas dicas pessoal, como sou novo em Java, tava tentando fazer daquela forma, ai segui as orientações e deram certo.

Mas surgiu um novo problema (desculpem se eu não puder postar aqui), no insert, tenho uma Jcheckbox, se estiver selecionado quero que mande uma String para o Banco de Dados ‘S’, se não estiver selecionado envie um valor ‘N’; queria saber o método correto para fazer está verificação, muito obrigado desde já!

Está desta forma meu código, o JcheckBox se chama cbinativo:

stmt.executeUpdate("insert into cad_pessoa"
   + "(pes_tpe_codigo, pes_nome, pes_nascimento, pes_rua, pes_bairro, pes_cep,pes_cidade, pes_estado, pes_profissao,"
   + " pes_empregador, pes_cpf, pes_rg, pes_civ_nome, pes_sexo, pes_mail, pes_data_cadastro, pes_inativo  ) values"
   
   + "("+codigo+",'"+txnome.getText()+ "','"+txdatanascimento.getDate()+"','"+txrua.getText()+"','"+txbairro.getText()+"',"
   + "'"+txcep.getText()+"','"+txcidade.getText()+"','"+txestado.getText()+"','"+txprofissao.getText()+"',"
   + "'"+txempresa.getText()+"','" +txcpf.getText()+ "','" +txrg.getText()+ "','" +comboestadocivil.getSelectedItem()+ "',"
   + "'" +combosexo.getSelectedItem()+ "','" + txmail.getText() + "','"+txdatacadastro.getDate()+"', '"+cbinativo.isSelected()+"')");
robsonoliveira

BOA NOITE,

Da uma olhada ai para ver como funciona:

JCheckBox check = new JCheckBox();

check.setSelected(true);

System.out.println(check.isSelected());

Depois que resolver seu problema de uma lida em PreparedStatement, e tente implementa-lo, seu código ficara bem legivel e você não estara propenso a erros de concatenação usando Statements…

Ate mais…

D

Poxa Robson, valeu mesmo cara! Deu certo aqui!!!
Graças ao Fórum, to aprendendo muito.
Agradeço a todos!

Criado 25 de agosto de 2012
Ultima resposta 26 de ago. de 2012
Respostas 5
Participantes 4