Formatar campo do tipo DATE no BD

6 respostas
M

Pessoal, estou com uma dúvida em inserir uma data. Tenho o seguinte JTextField, edtData. na query paso ele da seguinte maneira:

'"+edtData.getText()+"'

até ai tudo bem. Só que o campo no BD é do tipo DATE. Quando vou inserir não dá erro algum só que no campo do BD fica como “NULL”, como faço para formatar esse texto como data para guardar na tabela?

OBS: estou usando MySQL.

6 Respostas

V

Olá,

Converta seu valor para Date, isso vai te ajudar entre outras coisas em validar a data e utilize um PreparedStatement.

Ex.:

PreparedStatement ps = con.prepareStatement("update foo set date_bar = ? where foo.id = 1"); ps.setDate(1, newDateBar); ps.executeUpdate();

:wink:

M

Amigo,

não entendi o código que você me passou não. estou te passando a query inteira para poder ficar mais claro.

dbCon.setQuerry("INSERT INTO cadastro_alunos(Nome,CPF,RG,Nascimento,Sexo,E_Civil,Rua,Numero,Bairro,Cidade,Estado,Cep,Email,Telefone,Fax,Matricula,Situacao,Admissao,Semestre,Curso,Turma,Senha)" +
" VALUES ('"+edtNome.getText()+"', '"+edtCpf.getText()+"', '"+edtRg.getText()+"', '"+edtNascimento.getText()+"', '"+cbSexo.getSelectedItem()+"', '"+cbCivil.getSelectedItem()+"', '"+edtRua.getText()+"'," +
" '"+edtNumero.getText()+"', '"+edtBairro.getText()+"', '"+edtCidade.getText()+"', '"+cbUf.getSelectedItem()+"', '"+edtCep.getText()+"', '"+edtEmail.getText()+"', '"+edtTel.getText()+"', '"+edtFax.getText()+"'," +
" '"+edtMatricula.getText()+"', '"+edtSituacao.getText()+"', '"+edtAdmissao.getText()+"', '"+edtAno.getText()+"', '"+edtCurso.getText()+"', '"+edtTurma.getText()+"', '"+edtSenha.getText()+"' )");

no campo “edtNascimento” preciso converter uma string em data para armazenar no campo “Nascimento” do BD que é do tipo DATE. Se eu deixo do jeito que está as outras informações são gravadas mas a o campo Nascimento fica como NULL.

V

Aconselho você a estudar a classe que eu te passei acima, e, talvez mudar a forma com que você desenvolveu esta classe pois esse modo não te permite utilizar uma query parametrizada.

D

Acho q o seu problema monstrinho eh q vc nao ta formatando as datas. Para inserir data no MySQL, ela precisa estar no formato yyyy-MM-dd, ou seja, para o dia de hj seria: 2004-12-20. Mas como fazer isso?! Simples, use a classe java.text.SimpleDateFormat. Exemplo:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); // formato data
java.util.Date data = sdf.parse(edtData.getText());

Acho q faltou tratar alguma excecao, mas isso vc ve depois… Com isso vc tem um objeto do tipo Date, no formato correto para ser insediro no BD. Eh soh executar a query agora

M

Darkseid,

Fiz igual ao que você me passou tratando a “ParseException” o código ficou assim:

public java.util.Date formatDate(String s) {
        try {
            java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd");
            data = sdf.parse(s);
        } catch (java.text.ParseException e) {
            e.printStackTrace();
        }
        return data;
    }

mas mesmo assim quando passo a para a query ainda continua o campo como null não guardando o valor que desejo. Oque devo fazer?

M

Estava lendo o manual do MySQL e achei uma instrução para poder formatar a data.

"INSERT INTO cadastro_alunos(Nome, CPF, RG, Nascimento) VALUES ('"+edtNome.getText()+"', '"+edtCpf.getText()+"', '"+edtRg.getText()+"', DATE'("+edtNascimento.getText()+")')"

Valeu a todos que me ajudaram… Muito Obrigado!
Aqui está o link com a documentação MySQL em Português

http://dev.mysql.com/doc/mysql/pt/index.html

Criado 20 de dezembro de 2004
Ultima resposta 22 de dez. de 2004
Respostas 6
Participantes 3