Mandar Null para campo inteiro no BD

Pessoal, tudo bem??

Como em toda aplicação, eu tenho alguns campos que podem ter o valor nulo, porém o sistema “reclama” quando o campo é inteiro e eu não mando nenhum valor para a SQL.

Como vocês tratam esse caso?

Penso eu que criar uma Sql para cada caso ficará extremamente inviável.

Desde já , obrigado a todos!

na hora de montar suas entidades… no lugar de usar [color=blue]int [/color] para os seus campos inteiros persistentes use Integer

Lembre-se que int é um Objeto primito portanto não pode ser nulo… porem Integer pode e representa a mesma coisa

Lavieri , mudei o tipo de int para Integer no meu construtor e mesmo assim acontece a mesma coisa!

[code]Veiculo veiculo = new Veiculo(idMontadora[comboMontadora.getSelectedIndex() -1],Integer.parseInt(textAno.getText()),textModeloCarro.getText(),textObservacoes.getText());

this.idVeiculo = veiculo.inclui();
[/code]

o problema ocorre quando eu nao digito nada nesse textAno e mando para

Vagner

Tentou verificar como estão as regras de validação de seu banco de dados?
Não tive problemas em nível de aplicação com a respeito disso, mas tive muitos problemas de que o campo na tabela era numérico, mas o dba esqueceu de me avisar que o campo era not null.

ok? :wink:

Rody, meu campo Ano está como padrão Nulo!
Não sei o que pode estar acontecendo!
Aí está minha classe de Aplicação!

Eu mudei esses campos int para Integer e mesmo assim não adiantou!
Aí eu voltei para int!

[code]package controleestoque;

import java.sql.ResultSet;

/**
*

  • @author VAGNER
    */
    public class Veiculo {
    private int idVeiculo,ano,idMontadora;
    private String modelo;
    private String observacoes;

    public Veiculo(int idVeiculo,int idMontadora,int ano,String modelo,String observacoes) //construtor usado na alteração
    {
    this.idVeiculo = idVeiculo;
    this.idMontadora = idMontadora;
    this.ano = ano;
    this.modelo = modelo;
    this.observacoes = observacoes;
    }
    public Veiculo(int idMontadora,int ano,String modelo,String observacoes) //construtor usado na inserção
    {
    this.idMontadora = idMontadora;
    this.ano = ano;
    this.modelo = modelo;
    this.observacoes = observacoes;
    }

    public Veiculo(int idVeiculo) //construtor usado na exclusão
    {
    this.idVeiculo = idVeiculo;
    }

    public int inclui()
    {

     return ConexaoMySQL.executaInsercao("Insert into veiculo (modelo,idMontadora,ano,observacoes) values('"+ this.modelo +"',"+this.idMontadora+","+this.ano+",'"+this.observacoes+"' );");
    

    }

    public static ResultSet pesquisa(String pesquisa, String campo)
    {
    ResultSet rs = null;
    rs = ConexaoMySQL.executaConsulta(“Select * from (veiculo JOIN montadora on veiculo.idMontadora = montadora.idMontadora) where “+campo+” like '”+pesquisa+"’;");
    return rs;
    }

    public void atualiza(){

     ConexaoMySQL.executaAtualizacao("update veiculo set modelo='"+this.modelo+"', idMontadora= "+this.idMontadora+" , ano="+this.ano+", observacoes ='"+this.observacoes+"' where idVeiculo = "+this.idVeiculo);
    

    }

    public void exclui(){

     ConexaoMySQL.executaAtualizacao("delete from veiculo where idVeiculo="+this.idVeiculo+";");
    

    }

}
[/code]

o erro esta aqui

Integer.parseInt(textAno.getText()),textModeloCarro.getText(),textObservacoes.getText())

vc não pode fazer…

Integer.parseInt(null)

portanto com o campo nulo, vc não pode fazer o parse

sempre bom mostrar o StackTrace quando vc tem erro ^^ … assim fica mais facil de ler o erro

Há… volte os campos que podem ser nulos para Integer… int não aceita null