Erro For Input String "4,00"

5 respostas
J

Pessoal estou tentando enviar um valor para o banco de dados e esta aparecendo esta mensagem. No campo estou usando a formataçao "0.00", e no banco como double. Podem me ajudar? O erro esta na linha 19, no campoValor.

try{
                //***realizando conexao com banco de dados
                conDb.conexaoMySql();
        
                try{
                    //***Criando preparedStatement
                    PreparedStatement ps = (PreparedStatement) conDb.getConex().prepareStatement("INSERT INTO contas_pagar VALUES (?,?,?,?,?,?,?,?,?,?,?)");
                    
                    total = (Integer.parseInt(campoNumParcelas.getText()) * Integer.parseInt(campoValor.getText()));
                    
                    /*INSERINDO INFORMAÇOES NO BANCO DE DADOS*/
                    ps.setInt(1,codigo);
                    ps.setString(2,campoCredor.getText());
                    ps.setString(3, campoNumDocumento.getText());
                    ps.setString(4, campoDataDoc.getText());
                    ps.setString(5, campoVencimento.getText());
                    ps.setInt(6, Integer.parseInt(campoNumParcelas.getText()));
                    ps.setString(7, (String) comboBoxFrequencia.getSelectedItem());
                    ps.setDouble(8, Double.parseDouble(campoValor.getText()));
                    ps.setString(9, (String) comboBoxSituacao.getSelectedItem());
                    ps.setString(10, campoBanco.getText());
                    ps.setDouble(11, total);                    
                    ps.executeUpdate();
                     
                    JOptionPane.showMessageDialog(null, "Lançamento realizado com sucesso!");
                
                    //***BLOQUEANDO CAMPOS
                    desabilitaCampos();
                    botSalvar.setEnabled(false);                    
                    flag = 0;                    
                    
                }catch(Exception e){
                    JOptionPane.showMessageDialog(null, "Erro ao lançar conta!");
                    JOptionPane.showMessageDialog(null, e.getMessage());
                }
            }catch(Exception e){
                JOptionPane.showMessageDialog(null, "Erro ao conectar banco de dados!");
                JOptionPane.showMessageDialog(null, e.getMessage());
            }
        }

Obrigado.

5 Respostas

maquiavelbona

Apesar de eu falar para você ir procurar porque essa pergunta é mais do que frequente aqui, vou dar pelo que procurar: NumberFormatter e Locale.

Até!

J

Obrigado e me desculpe, é a primeira vez que postei algo, ate procurei mas nao por estas palavras, mas obrigado mesmo.

maquiavelbona

Se você ainda não achou:

A representação do Java para separador de decimais é o ponto (.) e para separador de milhares é a vírgula (,), o inverso do nosso sistema. Então para não se preocupar com esses causos de localização, tem uma classe que diz qual é o local padrão e outra que pega esse local e transforma a String em double. Quando achares um tópico, verás o exemplo de como funciona.

Até!

Ironlynx

jjuinor0901, reforçando as dicas anteriores, dá uma lida aqui:
http://blog.caelum.com.br/2007/10/02/internacionalizacao-no-codigo-java/

J

Valeu pessoal. Deu tudo certinho ja.

Criado 18 de fevereiro de 2008
Ultima resposta 19 de fev. de 2008
Respostas 5
Participantes 3