FORUM DARKERS

Tecnologia & Informática => Programação => Java => Topic started by: Triplo X on 19 de August , 2008, 06:17:40 PM

Title: [Dúvida -> Solucionada] Cadastrar dados no banco
Post by: Triplo X on 19 de August , 2008, 06:17:40 PM
Estou com um problema em cadastrar os dados no banco.

Sempre aparece uma excessão mas não consigo resolver.

segue o código:

public void Tela1() {   
         
      Connection con = null;  //inicializa como nula   
 
       String num;   
       try {   
           num = fieldNum.getText();   
            } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
                       
                String nome;   
            try {   
                nome = fieldNome.getText();   
                } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
                int idade;   
             try {   
                idade = Integer.parseInt(fieldIdade.getText());   
                } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
                String datInsemin;   
            try {   
                datInsemin= fieldInsemin.getText();   
               } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }     
               
                   
                String datParto;   
                try {   
                 datParto = fieldParto.getText();   
                } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
                String datSecagem;   
                try {   
                datSecagem = fieldSecagem.getText();   
                } catch (NumberFormatException ex) {   
                    JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                     "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
             String cria;   
             try {   
                cria = fieldCria.getText();   
             } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
                String datVacina;   
                try {   
                    datVacina = fieldVacina.getText();   
            } catch (NumberFormatException ex) {   
                JOptionPane.showMessageDialog(null, "Preencha todos os campos corretamente!",   
                "Erro", JOptionPane.ERROR_MESSAGE);                   
                return;   
            }   
               
               
 /***********   conexão   ***************/     
         
      if (con == null) {   
       try {   
             Class.forName("org.gjt.mm.mysql.Driver");   
             
               
              con = DriverManager.getConnection("jdbc:mysql://localhost/gado", "root", "2017");   
                 
              Statement stmt = con.createStatement();   
                 
              String nomTable = "tabela1";   
              stmt.executeUpdate("INSERT  INTO "+ nomTable+ "(codGado, nomeGado, idadeGado, datInsemin," +   
              "datParto, datSecagem, sexoCria, datVacina) VALUES ('"+fieldNum+"', '"+fieldNome+"', '"+fieldIdade+"', " +   
              " '"+fieldInsemin+"', '"+fieldParto+"', '"+fieldSecagem+"', '"+fieldCria+"', '"+fieldVacina+"');"  );   
                 
              JOptionPane.showMessageDialog(this, "Dados cadastrados com sucesso!");   
                 
              fieldNum.setText("");   
              fieldNome.setText("");   
              fieldIdade.setText("");   
              fieldInsemin.setText("");   
              fieldParto.setText("");   
              fieldSecagem.setFocusable(true);   
              fieldCria.setText("");   
              fieldVacina.setText("");   
                 
                stmt.close();   
                con.close();   
               
                 } catch (ClassNotFoundException cnfe) {   
                JOptionPane.showMessageDialog(null, "Driver JDBC não encontrado!",   
                "Erro", JOptionPane.ERROR_MESSAGE);   
               
               
            } catch (SQLException sqlex) {   
                JOptionPane.showMessageDialog(null, "Os seguintes erros foram encontrados:\n" + sqlex,   
                "Erro", JOptionPane.ERROR_MESSAGE);   
                System.err.println(sqlex);   
            }   
        }   
           
           
     
    } // fim do if 
}


Também modifiquei a parte do executeUpdate por String sql = "..."
stmt.executeUpdate(sql);

Mesmo assim continua mostrando a excessão a seguir:
com.mysql.jdbc.MysqlDataTruncation: Data truncation: Data too long for column 'codGado' at row 1 

Ficarei muito grato se puderem me ajudar.

Obrigado.
Title: Re: [Dúvida] Cadastrar dados no banco
Post by: Reeves on 19 de August , 2008, 07:17:43 PM
o Exception está falando que vc está tentando enfiar melãncia onde deveria ir um ovo...

ou seja...

a coluna codGado tem um tamanho <  vc está jogando nele.

exemplo:
....
codGado varchar(5);
.....

' seu insert '
INSERT INTO tabela(codGado) values('000008569');

sakou ?!
verifica isso ai
Title: Re: [Dúvida] Cadastrar dados no banco
Post by: Triplo X on 20 de August , 2008, 10:09:45 AM
Resolvi o problema!

Bastava adicionar um .getText() nos fields dentro do INSERT do executeUpdate.

Todos os campos estavam sendo truncados, mas mostrava uma excessão de apenas o primeiro campo truncado.

Está resolvido.

Reeves, obrigado pela ajuda.
Title: Re: [Dúvida] Cadastrar dados no banco
Post by: #phobia on 20 de August , 2008, 12:06:53 PM
Ótimo, resolvido -> trancado.

Caso necessite contate algum moderador para reabrir o tópico.


Bye.