[RESOLVIDO] Erro ao gravar data no MySQL

4 respostas
J

Pessoal, estou tendo um problema ao tentar gravar uma data no formato String no banco MySQL, pois quando persisto uma data, a mesma é gravada com os valores alterados, exemplo: 01/01/2001 grava 06/06/2023. Alguém tem alguma exemplo para mim ajudar.

4 Respostas

A

Qual valor chega no DAO? Você usou o Debug?

J

Não usei o Debug.

Ele entra no Dao assim:

//Configurando a data
            str = jFDataNasc.getText();
            Date data = (Date)formatador.parse(str);
            p1.setData(data);
            //Fim da configuração da data
J
Dê uma olhada no teu formatador. Para retornar '06/06/2023' ele deve estar usando 'yyyy/MM/dd' em vez de 'dd/MM/yyyy' Segue um exemplo:
SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");

str = jFDataNasc.getText();  
Date data = (Date)formatador.parse(str);
p1.setData(data);
J

Valeu pessoal, consegui resolver. Segue abaixo o trecho do código:

//Classe Model

        //Criei dois métodos gets para apresentar a data em dois formatos
        
        //Retorna data no formatado de String
	public String getDataFormatada() {
        	SimpleDateFormat formatador = new SimpleDateFormat("dd/MM/yyyy");
        	String dataFormat = formatador.format(data);
        	return dataFormat;
    	}
	
	//Retorna data no formatado de Date do MySQL

   	public Date getData() {
        	return data;
    	}

	//Seta um valor de tipo Date (java.util.Date) para o banco

    	public void setData(Date data) {
        	this.data = data;
    	}

//Classe Dao

public void adicionar(Paciente paciente) throws SQLException, ParseException{

        String sql = "INSERT INTO paciente(nome, idade, endereco, data, sexo)"
                   + "VALUES(?, ?, ?, ?, ?)";
       
        PreparedStatement stmt = this.conexao.prepareStatement(sql);

        stmt.setString(1, paciente.getNome());
        stmt.setString(2, paciente.getIdade());
        stmt.setString(3, paciente.getEndereco());
	
	//Armazena no banco da data no formato Date(java.sql.Date)
        stmt.setDate(4, new java.sql.Date(paciente.getData().getTime()));

        stmt.setString(5, paciente.getSexo());

        stmt.execute();
        stmt.close();
    }
Criado 20 de abril de 2011
Ultima resposta 21 de abr. de 2011
Respostas 4
Participantes 3