Falha ao inserir um dado do tipo Float no Banco de Dados

2 respostas
Diego_V_Silva

Ola galera, estou desenvolvendo uma aplicação com a seguinte funcionalidade, onde o usuário ira informar alguns dados sobre características de um determinado carro, tenho uma classe com o nome de “InsereDados” com o seguinte método “InserirAutomoveis” onde este método recebe de outra classe os parâmetros que foram informados pelo usuário. O problema e o seguinte, ao inserir os dados no banco de dados(PostgreSQL), acontece o seguinte erro;

Exception in thread "main" java.lang.NullPointerException
at bancodadoscarro.InsereDados.InserirAutomoveis(InsereDados.java:26)
at bancodadoscarro.Main.main(Main.java:37)
Java Result: 1

O erro aponta para a seguinte linha da classe;

stmp.setFloat(4,valorCarro);

Como poderei estar procedendo para que possa ser inserido este dado sem ocorrer nenhum problema.

Segue abaixo o fonte da classe “InserirAutomoveis”;
Desde ja agradeço.

package bancodadoscarro;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.swing.JOptionPane;

/**
 *
 * @author Diego V Silva
 */
public class InsereDados {

    public static void InserirAutomoveis(String nomeCarro, String marcaCarro, String anoCarro, Float valorCarro, String proprietarioCarro){
        try {
            String sql = "insert into carro(nome_carro,marca_carro,ano_carro,valor_carro,proprietario_carro) values(?,?,?,?,?)";
            PreparedStatement stmp = ConectaBanco.con.prepareStatement(sql);
            stmp.setString(1, nomeCarro);
            stmp.setString(2,marcaCarro);
            stmp.setString(3,anoCarro);
            stmp.setFloat(4,valorCarro);
            stmp.setString(5,proprietarioCarro);
            stmp.executeUpdate();
            ConectaBanco.con.commit();
            JOptionPane.showMessageDialog(null,"Dados inseridos com sucesso!","Mensagem", JOptionPane.WARNING_MESSAGE);

        } catch (SQLException eSQL) {
            eSQL.printStackTrace();
            JOptionPane.showMessageDialog(null,"Falha ao inserir os dados!" + "Mensagem: "+eSQL.getMessage(), "Erro",JOptionPane.ERROR_MESSAGE);
        }

    }

2 Respostas

R

Faz tempo que não mexo com PreparedStatement, mas olhando para o seu código completo, no parametro do método você Float e usa setDouble.
Se você recebe Float você usa setFloat
Se você recebe Double você usa setDouble

Só que acho que é outra coisa porque erro de NullPointerException, ocorre qual algo está vazio(nulo), você por acaso define valoor para todos?

Onde você esta chamando esse método?

Diego_V_Silva

Estou chamando através do main, e estou utilizando um classe Leitura, para a leitura dos dados; veja as classes logo abaixo;

Classe main;

package bancodadoscarro;

/**
 *
 * @author Diego V Silva
 */
public class Main {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String nomeCarro,marcaCarro,anoCarro,proprietarioCarro;
        Float valorCarro = null;
        nomeCarro = null;
        marcaCarro = null;
        anoCarro = null;
        valorCarro = null;
        proprietarioCarro = null;
        ConectaBanco.ConectaPostgreSQL("unijales");
        System.out.println("Informe o nome do Carro");
        nomeCarro = Leitura.letras(nomeCarro);
        System.out.println("Marca do Carro");
        marcaCarro = Leitura.letras(marcaCarro);
        System.out.println("Ano do Carro");
        anoCarro = Leitura.letras(anoCarro);
        //System.out.flush();
        System.out.println("Valor do Carro");
        valorCarro = Leitura.real(valorCarro);
        System.out.println("Proprietario do Carro");
        proprietarioCarro = Leitura.letras(proprietarioCarro);
        InsereDados.InserirAutomoveis(nomeCarro, marcaCarro, anoCarro, valorCarro, proprietarioCarro);// Aqui que eu chamo a classe para inserir os dados no banco
        

    }

}

Classe Leitura, onde e realizado a leitura dos dados

package bancodadoscarro;

/**
 *
 * @author Diego V Silva
 */
import java.util.Scanner;
public class Leitura {
   static Scanner leia = new Scanner(System.in);
    public static String letras(String variavel){
        leia.nextLine();
        return(variavel);

    }
    public static Float real(Float variavel){
        leia.nextFloat();
        return(variavel);

    }

}
Criado 14 de março de 2009
Ultima resposta 14 de mar. de 2009
Respostas 2
Participantes 2