Gravar campos em branco

6 respostas
renato1010

Olá pessoal.
Sou totalmente novato em java e estou tendo o seguinte problema?
Estou desenvolvendo uma aplicação e já criei o banco de dados em MySQL 5.
Tenho uma tabela que possui dois campos que podem ser nulos, mas quando estou usando a aplicação e vou gravar os dados nessa tabela, se os campos que podem ser nulos estiver em branco a aplicação da erro e não consegue gravar. Se eu preencher todos os campos grava sem problemas, mas eu preciso fazer com que a aplicação grave o registro mesmo se os campos que podem ser nulos estiver em branco.
Obs. não fiz nenhum tipo de tratamento de dados, apenas marquei como podendo ser nulo no MySQL e na hora de gravar deixei os campos correspondentes em branco.

Alguém pode ajudar?
Desde já, agradeço a atenção.

Renato

6 Respostas

eduardoac

Esta gravando por JDBC ou usando o Hibernate? Pode postar o código de gravação dos dados?
Abraços.

francislon

Vejamos,

Imagine que vc tem uma tabela Membro com as colunas nome, sobrenome e dataDeAniversario.
Imaginemos que sobrenome e dataDeAniversario podem ser nulos.

Se eu quiser inserir todas as colunas eu não preciso indicar as colunas que estou inserindo dentro no sql. Ficaria assim:

insert into Membro values('francislon','silva','1987-04-15');

Mas se eu não quiser colocar os campos que podem ser nulos, no sql eu terei que especificar apenas as colunas que eu quero inserir:

insert into Membro (nome) values ('francislon');

Logo quando não vamos inserir em todas as colunas do banco precisamos especificar todas as colunas que estamos inserindo.
Abraço.

renato1010

Estou usando JDBC. Segue abaixo o código para salvar. Faço a verificação se o campo data de aplicação está em branco. Mas não está funcionando, so grava se eu preencher todos os campos, os campos tf_dataaplicacao e tf_dataimunidade podem ser nulos.

if(tf_dataaplicacao.getText()=="")//se esse campo estiver em branco não insere nele nem no tf_dataimunidade
{

String sqlinsert = "insert into vacinacao " +
                "(dataprev,fk_idpaciente,lotevacina," +
                "idunidsaude,fk_idfuncionario,fk_vacinarec,dose) values ('"+
                
                tf_dataprev.getText()+"','"+
                tf_idpaciente.getText()+"','"+
                cb_lote.getSelectedItem()+"','"+
                tf_idunidsaude.getText()+"','"+
                tf_idfuncionario.getText()+"','"+
                tf_vacinarec.getText()+"','"+
                tf_dose.getText()+"')";
        con_vacinacao.statement.executeUpdate(sqlinsert);
        }
        
        else \\se a data de aplicação não estiver em branco insere os dados que estão no campos correspondentes
        {
         
        String sqlinsert = "insert into vacinacao " +
                "(dataaplicacao,dataprev,dataimunidade,fk_idpaciente,lotevacina," +
                "idunidsaude,fk_idfuncionario,fk_vacinarec,dose) values ('"+
                tf_dataaplicacao.getText()+"','"+
                tf_dataprev.getText()+"','"+
                tf_dataimunidade.getText()+"','"+
                tf_idpaciente.getText()+"','"+
                cb_lote.getSelectedItem()+"','"+
                tf_idunidsaude.getText()+"','"+
                tf_idfuncionario.getText()+"','"+
                tf_vacinarec.getText()+"','"+
                tf_dose.getText()+"')";
        con_vacinacao.statement.executeUpdate(sqlinsert);
        }
        
        JOptionPane.showMessageDialog(null,"Cadastro realizado com sucesso");

Estou usando Netbeans 6.01 e MySQL 5.0

Obrigado pela atenção

francislon

Não se compara String com ‘==’

if ( tf_dataaplicacao.getText().equals("")) { //seu codigo aki }

renato1010

Era isso mesmo, foi so comparar com equals que deu certo.

Obrigado ao Francislon e a todos que ajudaram

francislon

É assim mesmo jovem. Aconselho vc a dar uma lida na base da linguagem antes de começar a trabalhar num projeto com banco de dados.

Criado 18 de outubro de 2008
Ultima resposta 18 de out. de 2008
Respostas 6
Participantes 3