Trabalhando com datas com java e firebird

2 respostas
belmonte

prezados, tenho uma classe VO com os métodos:

public void setDataNascimento(Date dataNascimento) {
        this.dataNascimento = dataNascimento;
    }

    public Date getDataNascimento() {
        return dataNascimento;
    }

para um cadastro básico, tenho o seguinte código:

public void Cadastrar() {
		try {
			SimpleDateFormat formatacao = new SimpleDateFormat("dd/MM/yyyy");
			DependenteVO dVO = new DependenteVO();
			DependenteRN dRN = new DependenteRN();
			dVO.setNome("DEPENDENTE");
			dVO.setSexo("M");
			dVO.setDataNascimento(formatacao.parse("13/05/1980"));
			dVO.setCodFuncionario(2);
			if(dRN.Cadastrar(dVO)){
				System.out.println("Cadastro de dependente realizado com sucesso!");
			}
			else {
				System.out.println("Erro no cadastro de dependente!");
				System.out.println(dRN.getErro());
			}
		} catch(Exception e) {
			System.out.println("Erro no cadastro! " + e.getMessage());
		}
	}

porém, quando rodo o método Cadastrar(), ele cai no else aparecendo a mensagem: Erro no cadastro de dependente!
verifiquei que o formato no firebird (inserindo direto no banco) é o seguinte:

INSERT INTO DEPENDENTE(NOME,SEXO,DATANASCIMENTO,CODFUNCIONARIO) VALUES('DEPENDENTE','M','1980-05-13','2')

com esse formato ‘1980-05-13’, ele insere tranqüilo. Porém, passo para ele o formato data do java, que vai assim: ‘Tue May 13 00:00:00 BRT 1980’, daí não insere.
alguém sabe me dizer, ao menos que use string ao invés de date, como resolver esse problema?
grato desde já pela atenção.
atenciosamente,

2 Respostas

guilherme.chapiewski

Você pode usar um SimpleDateFormat para formatar a data de modo que ela possa ser inserida no seu banco de dados. É bem simples de usar, veja a documentação em: http://java.sun.com/j2se/1.5.0/docs/api/java/text/SimpleDateFormat.html

Com ele você pode obter uma String que representa uma data de várias formas diferentes.

Abraços,
Guiherme Chapiewski

belmonte

consegui resolver o “problema” (talvez não seja a melhor maneira, mas vou deixar postado aqui para quem precisar…

String sql;
SimpleDateFormat formatacao = new SimpleDateFormat("yyyy-MM-dd");
sql = "INSERT INTO DEPENDENTE(NOME,SEXO,DATANASCIMENTO,CODFUNCIONARIO) VALUES('" + dVO.getNome() + "','" + dVO.getSexo() + "','" + formatacao.format(dVO.getDataNascimento()) + "','" + dVO.getCodFuncionario() + "')";

as únicas alterações que fiz foram:

  • coloquei a formatação para o tipo que é aceito pelo firebird: SimpleDateFormat formatacao = new SimpleDateFormat(“yyyy-MM-dd”);
  • depois acrescentei a formatação para a transformação de date para string (inverso do que foi feito na atribuição, no momento do cadastro, onde é passada uma string e essa é transformada em uma data): formatacao.format(dVO.getDataNascimento()).
    atenciosamente,
Criado 9 de janeiro de 2007
Ultima resposta 9 de jan. de 2007
Respostas 2
Participantes 2