Problemas com método de inserção no banco de dados

4 respostas
leo.biscassi

Boa noite pessoal, estou trabalhando em cima do meu primeiro projeto com Java, o mesmo consiste em uma aplicação que servirá de controle para uma biblioteca.
Fiz os métodos que fazem as movimentação com o banco de dados, porém, logo no primeiro teste do botão salvar já tenho vários erros, gostaria de saber se alguém pode me ajudar com eles. A seguir será postado o método que estou utilizando para inserir registros no banco de dados, que no caso é PostgreSQL.

//Método com o comando SQL está na classe que agrupa todos os comandos SQL e a conexão com o banco     
           public void cadastrarFuncionario(Pessoas registro){
           try{
           String cadastraFuncionario = "INSERT INTO cadastro_funcionarios(" +
                   "nome_funcionario, endereco_funcionario, cidade_funcionario, cep_funcionario," +
                   "dat_nasc_funcionario, rg_funcionario, cpf_funcionario, telefone_funcionario," +
                   "celular_funcionario, email_funcionario, observacao_funcionario, id_funcionario, senha_funcionario, imd_funcionario) " +
                   " VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)";
           cadastraFuncionarios = dbConnection.prepareStatement(cadastraFuncionario);
           cadastraFuncionarios.setString(1, registro.getNome());
           cadastraFuncionarios.setString(2, registro.getEndereco());
           cadastraFuncionarios.setString(3, registro.getCidade());
           cadastraFuncionarios.setInt(4, registro.getCep());
           cadastraFuncionarios.setDate(5, (Date) registro.getDataNascimento());
           cadastraFuncionarios.setInt(6, registro.getRg());
           cadastraFuncionarios.setInt(7, registro.getCpf());
           cadastraFuncionarios.setInt(8, registro.getTelefone());
           cadastraFuncionarios.setInt(9, registro.getCelular());
           cadastraFuncionarios.setString(10, registro.getEmail());
           cadastraFuncionarios.setString(11, registro.getObservacao());
           cadastraFuncionarios.setString(12, registro.getId());
           cadastraFuncionarios.setString(13, registro.getSenha());
           cadastraFuncionarios.setLong(14, registro.getImd());
           cadastraFuncionarios.execute();
           cadastraFuncionarios.close();
              }catch(SQLException e){
                                e.printStackTrace();
                                    }
          }
// Método presente no JInternalFrame de Cadastro de Funcionários e consequentemente o botão salvar
        public void cadastroAluno() throws Exception{
            Pessoas aluno = new Pessoas();
            aluno.setNome(txtNome.getText());
            aluno.setEndereco(txtEndereco.getText());
            aluno.setCidade(txtCidade.getText());
            aluno.setCep(Integer.parseInt(mskCep.getText()));
            aluno.setDataNascimento(formataData(mskNascimento.getText()));
            aluno.setRg(Integer.parseInt(mskRg.getText()));
            aluno.setCpf(Integer.parseInt(mskCpf.getText()));
            aluno.setTelefone(Integer.parseInt(mskTelefone.getText()));
            aluno.setCelular(Integer.parseInt(mskCelular.getText()));
            aluno.setId(txtId.getText());
            aluno.setSenha(txtSenha.getText());
            aluno.setEmail(txtEmail.getText());
            aluno.setObservacao(txtObservacao.getText());

            ConexaoADD cadastro = new ConexaoADD();
            cadastro.cadastrarAlunos(aluno);
        }
// Método do botão Salvar
    private void btnSalvarActionPerformed(java.awt.event.ActionEvent evt) {                                          
        try{
        cadastroAluno();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

E abaixo os erros que são gerados quando clico sobre o botão:

run:
java.lang.NumberFormatException: For input string: "[telefone removido]"
        at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
        at java.lang.Integer.parseInt(Integer.java:461)
        at java.lang.Integer.parseInt(Integer.java:499)
        at Window.CadastroFuncionarios.cadastroFuncionario(CadastroFuncionarios.java:62)
        at Window.CadastroFuncionarios.btnSalvarActionPerformed(CadastroFuncionarios.java:336)
        at Window.CadastroFuncionarios.access$100(CadastroFuncionarios.java:26)
        at Window.CadastroFuncionarios$2.actionPerformed(CadastroFuncionarios.java:289)
        at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995)
        at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318)
        at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387)
        at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242)
        at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236)
        at java.awt.Component.processMouseEvent(Component.java:6267)
        at javax.swing.JComponent.processMouseEvent(JComponent.java:3267)
        at java.awt.Component.processEvent(Component.java:6032)
        at java.awt.Container.processEvent(Container.java:2041)
        at java.awt.Component.dispatchEventImpl(Component.java:4630)
        at java.awt.Container.dispatchEventImpl(Container.java:2099)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577)
        at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238)
        at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168)
        at java.awt.Container.dispatchEventImpl(Container.java:2085)
        at java.awt.Window.dispatchEventImpl(Window.java:2478)
        at java.awt.Component.dispatchEvent(Component.java:4460)
        at java.awt.EventQueue.dispatchEvent(EventQueue.java:599)
        at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
        at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
        at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
        at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
        at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

E por via das dúvidas minha classe:

package LibraryAdministrator;
import java.util.Date;
import java.sql.*;

public class Pessoas {
        Integer codigo = 0;
        String nome = "";
        String endereco = "";
        String cidade = "";
        Integer cep = 0;
        Date data_nascimento;
        Integer rg = 0;
        Integer cpf = 0;
        Integer telefone = 0;
        Integer celular = 0;
        String email= "";
        String observacao = "";
        String id = "";
        String senha = "";
        Long imd;

        public void setNome(String nome){
            this.nome = nome;
        }
        public void setEndereco(String endereco){
            this.endereco = endereco;
        }
        public void setCidade(String cidade){
            this.cidade = cidade;
        }
        public void setCep(Integer cep){
            this.cep = cep;
        }
        public void setDataNascimento(Date data_nascimento){
            this.data_nascimento = data_nascimento;
        }
        public void setRg(Integer rg){
            this.rg = rg;
        }
        public void setCpf(Integer cpf){
            this.cpf = cpf;
        }
        public void setTelefone(Integer telefone){
            this.telefone = telefone;
        }
        public void setCelular(Integer celular){
            this.celular = celular;
        }
        public void setEmail(String email){
            this.email = email;
        }
        public void setObservacao(String observacao){
            this.observacao = observacao;
        }
        public void setId(String id){
            this.id = id;
        }
        public void setSenha(String senha){
            this.senha = senha;
        }
        public void setImd(Long imd){
            this.imd = imd;
        }
        public void setCodigo(Integer codigo){
            this.codigo = codigo;
        }


        public String getNome(){
            return nome;
        }
        public String getEndereco(){
            return endereco;
        }
        public String getCidade(){
            return cidade;
        }
        public Integer getCep(){
            return cep;
        }
        public Date getDataNascimento(){
            return data_nascimento;
        }
        public Integer getRg(){
            return rg;
        }
        public Integer getCpf(){
            return cpf;
        }
        public Integer getTelefone(){
            return telefone;
        }
        public Integer getCelular(){
            return celular;
        }
        public String getEmail(){
            return email;
        }
        public String getObservacao(){
            return observacao;
        }
        public String getId(){
            return id;
        }
        public String getSenha(){
            return senha;
        }
        public Long getImd(){
            return imd;
        }
        public int getCodigo() {
            return codigo;
        }
}

4 Respostas

E

dando uma olhada rapida no seu codigo percebi que o numero de ponro de interrogacao é menor que o numero de dados pegados

leo.biscassi

Cara eu mudei alguns tipos de dados no banco para VARCHAR e havia um ponto de interrogação a mais. Estou com problemas em um SELECT, mas devo criar outra postagem ou posso continuar nesta mesmo ? :slight_smile:

leo.biscassi

Bem pessoal, estou tentando colocar um SELECT no evento lostFocus de um jTextField, porém quando o mesmo executa a consulta ele me retorna este erro:

Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: For input string: "" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:470) at Window.CadastroFuncionarios.pesquisaFuncionario(CadastroFuncionarios.java:77) at Window.CadastroFuncionarios.txtCodigoFocusLost(CadastroFuncionarios.java:426) at Window.CadastroFuncionarios.access$000(CadastroFuncionarios.java:27) at Window.CadastroFuncionarios$1.focusLost(CadastroFuncionarios.java:170) at java.awt.AWTEventMulticaster.focusLost(AWTEventMulticaster.java:213) at java.awt.Component.processFocusEvent(Component.java:6159) at java.awt.Component.processEvent(Component.java:6023) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4630) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1850) at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:910) at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:568) at java.awt.Component.dispatchEventImpl(Component.java:4502) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4460) at java.awt.EventQueue.dispatchEvent(EventQueue.java:599) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122) CONSTRUÍDO COM SUCESSO (tempo total: 15 minutos 55 segundos)

Segue os métodos criados para fazer a consulta :

// Está na classe que agrupa comandos SQL public void pesquisaFuncionario(Pessoas registro, Integer codigo){ try{ String pesquisaFuncionario = "SELECT * FROM cadastro_funcionarios WHERE cod_funcionario=?"; pesquisaFuncionarios = dbConnection.prepareStatement(pesquisaFuncionario); pesquisaFuncionarios.setInt(1, registro.codigo); pesquisaFuncionarios.execute(); pesquisaFuncionarios.close(); }catch(SQLException e){ e.printStackTrace(); } }

// Método que está no JInternalFrame public void pesquisaFuncionario(){ Pessoas funcionario = new Pessoas(); funcionario.setCodigo(Integer.parseInt(txtCodigo.getText())); ConexaoADD pesquisa = new ConexaoADD(); pesquisa.pesquisaFuncionario(funcionario); }

//Código que está no botão private void txtCodigoFocusLost(java.awt.event.FocusEvent evt) { pesquisaFuncionario(); }

leo.biscassi

Posso estar enganado mais acho que o problema está na conversão da String que pegamos no jTextField para Integer, estou fazendo de forma correta ?
Pode estar ocorrendo algum erro com essa conversão ?

Criado 1 de dezembro de 2010
Ultima resposta 2 de dez. de 2010
Respostas 4
Participantes 2