Enviar dados para o banco deixando campos em branco

Acho que o título é autoexplicativo. Tenho uma tela com vários campos (textFields), mas se o usuário nao preenche todos, na hora de salvar (enviar ao banco) dá erro. Como devo proceder? Já habilitei o “not null” no banco e nao muda nada.

Deixo aqui alguns trechos do código para os companheiros analisarem, se precisarem de mais é só pedir.

Insercao dos dados no banco:

public void Salvar (ModeloPruebasArenaEnVerde mod) {
try {
conex.conectar();
PreparedStatement pst = conex.con.prepareStatement(“insert into pruebas_arena_verde(compactabilidad_arena_verde, humedad_arena_verde, rcv_arena_verde, rth_arena_verde, friabilidad_arena_verde, permeabilidad_arena_verde, especimen_arena_verde, analista_arena_verde, temperatura_arena_verde) values (?, ?, ?, ?, ?, ?, ?, ?, ?)”);

       Texto pré-formatado pst.setDouble(1, mod.getCompactabilidad());
        pst.setDouble(2, mod.getHumedad());
        pst.setDouble(3, mod.getRcv());
        pst.setDouble(4, mod.getRth());
        pst.setDouble(5, mod.getFriabilidad());
        pst.setDouble(6, mod.getPermeabilidad());
        pst.setDouble(7, mod.getEspecimen());
        pst.setString(8, mod.getAnalista());
        pst.setDouble(9, mod.getTemperatura());
        
        
        pst.execute();
        JOptionPane.showMessageDialog(null, "Dados inseridos com sucesso!");
        
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "Erro ao inserir dados!" +ex);
    }         

Botao salvar:

mod.setCompactabilidad(Double.parseDouble(jTextFieldCompactabilidadArenaEnVerde.getText()));
mod.setFriabilidad(Double.parseDouble(jTextFieldFriabilidadArenaEnVerde.getText()));
mod.setRcv(Double.parseDouble(jTextFieldRCVArenaEnVerde.getText()));
mod.setRth(Double.parseDouble(jTextFieldRTHArenaEnVerde.getText()));
mod.setPermeabilidad(Double.parseDouble(jTextFieldPermeabilidadArenaEnVerde.getText()));
mod.setEspecimen(Double.parseDouble(jTextFieldEspecimenArenaEnVerde.getText()));
mod.setHumedad(Double.parseDouble(jTextFieldHumedadArenaEnVerde.getText()));
mod.setAnalista((String) jComboBoxTelaArenaEnVerdeAnalista.getSelectedItem());

    control.Salvar(mod);

Obs: Há coisas em espanhol porque nao moro no Brasil.

aplica um setText(), pra cada um dos campos.

ex:

try{
prepared statement p = conex.con.prepareStatement(a string sql);
p.setString (1, nome.getText(); “aqui ele captura o que tiver o campo”

nome.setString(" ");
“aqui, depois de inserir os dados, ele joga um texto no campo nome, e como tá vazio, vai ficar sem nada lá”

catch(SQLException e){ }

1 curtida

Se o usuário não preencher nada, o texto do campo vai ser "" (vazio) que é diferente de null.
Antes de chamar o método que salva os dados, verifique se os campos obrigatórios não estão vazios, se estiverem, você apresenta um aviso para o usuário.

Bom dia, desculpe a demora para colocar a resposta, mas vamos lá…

bom…isso é definido pelo próprio java, na hora de colocar a condição, exemplo:

if ( nome.getText() . equals(" ") ) {
JOptionPane.showMessageDialog(null, “O campo Nome não pode ficar em branco”);
}

e assim por diante.

Você pode implementar outros campos na mesma sentença IF, usando os operadores &, &&, |, ||.

Comenta ai se funcionou.

1 curtida