Enviar dados para o banco deixando campos em branco

3 respostas Resolvido
L

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.

3 Respostas

A
Solucao aceita

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){ }

staroski

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.

A

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.

Criado 24 de julho de 2019
Ultima resposta 8 de ago. de 2019
Respostas 3
Participantes 3