Não insere Valor Nulo

Olá, me deparei com um problema, quem puder me ajudar, sempre que eu gravo os dados no banco, se os campos estiverem todos preenchidos no txfield ele grava normalmente, mais se algum campo estiver nulo ele dá erro, a base de dados fica no access não tem nenhum campo como requerido, o código do botão gravar é este:

//Grava no banco os dados do lançamento de combustível
String sqlinsert=“insert into Conrtolecombust (fiscal,data,obs,placa,litros,tipo,auto,valor,obs1)values(’”+
tf_prefixo.getText()+
“’,’”+tf_data.getText()+
“’,’”+tf_notafiscal.getText()+
“’,’”+tf_placa.getText()+
“’,’”+tf_litros.getText()+
“’,’”+cb_tipo.getSelectedItem()+
“’,’”+cb_autorizacao.getSelectedItem()+
“’,’”+tf_valor.getText()+
“’,’”+txarea_obs.getText()+"’)";

        con_sig.statement.executeUpdate(sqlinsert);
        JOptionPane.showMessageDialog(null,"Gravação realizada com sucesso");
        limpar_campos();
        //con_sig.resultset=con_sig.statement.executeQuery("Select *from cidade");
        //con_sig.resultset.next();
        //mostrar_dados();
    } catch (SQLException erro) {
        JOptionPane.showMessageDialog(null,"Erro na gravação dos dados "+ erro);
        
       
    }
    
    
}

ola cristiandrj,
Verifique os valores dos campos de texto antes de enviar para o banco. Caso algum esteja vazio, troque null por “”.

[]'s

Aproveita e substitui esse String “monstro” por um PreparedStatement. Provavelmente isso vai te ajudar na hora de descobrir aonde está esse valor nulo…

Olá, quero agradecer a todos que me ajudaram,

consegui resolver o problema da seguinte forma.:

String sqlinsert=“insert into Conrtolecombust (fiscal,data,obs,plaka,litros,tipo,auto,valor,km,obs1)values(”+
("".equals(tf_prefixo.getText())?null:("’"+tf_prefixo.getText()+"’"))+ // aqui o código verifica se o valor é nulo

                "," + ("".equals(tf_notafiscal.getText())?null:("'"+tf_notafiscal.getText()+"'")) +

Que Deus abençoe a Todos

Ficou meio feio assim né…rss

Se vc realmente não pode receber nulo na sua aplicação…altere o seu Bean nos seus métodos getCampo(); vc faz um if e se for null… vc retorna uma String vazia “”…

só estou dando uma dica para melhorar seu código…[/]'s

[quote]Olá, quero agradecer a todos que me ajudaram,

consegui resolver o problema da seguinte forma.:

String sqlinsert=“insert into Conrtolecombust (fiscal,data,obs,plaka,litros,tipo,auto,valor,km,obs1)values(”+
("".equals(tf_prefixo.getText())?null"’"+tf_prefixo.getText()+"’"))+ // aqui o código verifica se o valor é nulo

“,” + ("".equals(tf_notafiscal.getText())?null"’"+tf_notafiscal.getText()+"’")) + [/quote]

cristiandrj, você conseguiu resolver o problema, porém esse não é o melhor jeito de se resolver…
porque você não usa o PreparedStatement ?
com o PreparedStatement você escreveria o SQL e passaria os parâmetros separados da String contendo o SQL…
é bem mais claro de se escrever e não precisa se preocupar de ficar verificando se é null e concatenando Strings…
da uma lida a respeito do PreparedStatement… se você não entender… posta que a gente te ajuda …

Espero ter ajudado…
Att

Olá amigo, obrigado pela orientação, com certeza pelo que vc me falou é bem mais simples pois desta maneira que escrevi é muito chato, irei mergulhar sobre o assunto (PreparedStatement ) e após o mergulho voltarei aqui para escrever o resultado , e com certeza irei precisar de ajuda, muito obrigado

que Deus te abençoe

Olá,

Da uma pesquisada na net que você encontra muita coisa…
ao usar o Statement você pode sofrer uma prática chamada “SQL injection” …
de uma lida no seguinte artigo:
http://www.jtiago.com/2007/04/07/statement-e-sql-injection-em-java/

Dê uma lida no PreparedStatement…
Att

Olá, galera , Brunolinsalves depois de ler bastante sobre o PreparedStatement , tentei fazer mais não consegui, se puderem me ajudar ficarei muito grato

Opa…
é o seguinte…
com o prepared statement você não precisa se preocupar em ficar concatenando os valores no sql…
basta só você colocar uma “?” no lugar dos parametros e depois setar os parâmetros usando os métodos setInt, setString etc…

Segue um exemplo de um sql feito com Statement … e outro fazendo a mesma coisa mas com o PreparedStatement…

int parametro1 = 75;
String parametro2 = "Colombian";
String updateString = "UPDATE COFFEES SET SALES = " parametro1 + "WHERE COF_NAME LIKE " + parametro2;
stmt.executeUpdate(updateString);
PreparedStatement updateSales = con.prepareStatement("UPDATE COFFEES SET SALES = ? WHERE COF_NAME LIKE ? ");
updateSales.setInt(1, 75); 
updateSales.setString(2, "Colombian"); 
updateSales.executeUpdate():

Espero ter ajudado …
Att

de uma olhada nessa apostila da caelum ela tem um bom exemplo de preparedstatement:

http://www.caelum.com.br/caelum/curso-21.jsp espero ter ajudado

Olá, quero agradecer a ajuda de todos, consegui resolver o problema,
peguei o exemplo que me foi passado , peguei a apostila da caellum, (muito boa)
vocês são demais, antes eu não acreditava neste negócio de fórum, mais agora vejo que
ele está cheio de pessoas humildes que se preocupam em ajudar os outros, muito obrigado mesmo
que Deus abençoe a Todos, espero algum dia poder retribuir, ainda estou engatinhando rss