Porque não funciona a conversão de datas?

3 respostas
M

Olá pessoal, estou quebrando a cabeça e ainda não consegui fazer uma inclusão no banco de dados usando data...o que será que tá errado???
vejam...

import java.util.Date;

public class Aluno {
	
	private long matricula;
	private Date dataInclusao;
	private String nome;	

	public long getMatricula() {
		return matricula;
	}
	public void setMatricula(long matricula) {
		this.matricula = matricula;
	}
	public String getNome() {
		return nome;
	}
	public void setNome(String nome) {
		this.nome = nome;
	}
	public Date getDataInclusao() {
		return dataInclusao;
	}
	public void setDataInclusao(Date dataInclusao) {
		this.dataInclusao = dataInclusao;
	}
}
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class AlunoDAO {
	
	private Connection connection;
	
	public AlunoDAO() throws SQLException {
		this.connection = ConnectionFactory.getConnection();
	}
	
	public void adicionaAluno(Aluno aluno) throws SQLException {
		
		PreparedStatement stmt = this.connection.prepareStatement("insert into aluno(cd_matricula,nm_aluno,dt_inclusao) values(?,?,?)");
			
		stmt.setLong(1, aluno.getMatricula());
		stmt.setString(2, aluno.getNome());
		stmt.setDate(3,(java.sql.Date) aluno.getDataInclusao());
			
		stmt.execute();
		stmt.close();		
	}

}
import java.sql.SQLException; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date;

public class TestaInsere {

public static void main(String [] args) throws SQLException {

java.sql.Date data = new java.sql.Date(new java.util.Date().getTime());
// *** ou esse formato abaixo ****
//SimpleDateFormat formataData = new SimpleDateFormat("dd/MM/yyyy");
//Date data = formataData.parse("08/06/2007");

Aluno aluno = new Aluno();

aluno.setMatricula(0012);
aluno.setNome("Marcelo & Évily 1 ano juntos!");
aluno.setDataInclusao(data);

AlunoDAO dao = new AlunoDAO();
dao.adicionaAluno(aluno);
System.out.println("Gravado!" + data);
}

}

Obs: OS pacotes criados na aplicação foram importados, apenas não coloquei os.

Obrigado desde já.

3 Respostas

_Renatu

java.sql.Date e java.util.Date sao classes diferentes, e voce nao pode fazer cast de uma pra outra.

Para criar um java.sql.Date, faça:

java.util.Date datautil = //aqui voce pega sua data....
java.sql.Date datasql = new java.sql.Date(datautil.getTime());
marcosbrandao

Substitua esta linha

stmt.setDate(3,(java.sql.Date) aluno.getDataInclusao());

por esta

stmt.setDate(3,new java.sql.Date(aluno.getDataInclusao().getTime()));
M

Valeu amigo…vou tentar qdo chegar em casa…pena que só vou poder testar isso a noite…aqui no trabalho não tenho ambiente e nem posso instalar nada :-/

Criado 22 de maio de 2007
Ultima resposta 22 de mai. de 2007
Respostas 3
Participantes 3