Duvida jdbc

3 respostas
java
Dayson_Rodrigues

estou revisando aqui JDBC, e estou com a seguinte duvida.

*No caso, não aceita o tipo Date, preciso usar o Calendar dentro do construtor do Date, no meu modelo está como Calendar, já alterei por Date, mais ficou do mesmo jeito. como eu faço??

OBS: esse método aí está funcional. Apenas quero só esclarecer minha duvida.

Resumindo : Só está salvando a data de Agora e eu não quero fazer isso.

public void adiciona(Tarefa tarefa) {
		String sql = "insert into tarefas (descricao, finalizado,dataFinalizacao) values (?,?,?)";
		try {
			PreparedStatement stmt = connection.prepareStatement(sql);
			stmt.setString(1, tarefa.getDescricao());
			stmt.setBoolean(2, tarefa.isFinalizado());
			stmt.setDate(3,new Date(Calendar.getInstance().getTimeInMillis())); //Passa a Data passando um calendar.
			stmt.execute();
		} catch (SQLException e) {
			throw new RuntimeException(e);
		}
	}

3 Respostas

lvbarbosa

O método setDate da classe PreparedStatement é sobrecarregado e tem duas versões:

  • void setDate(int parameterIndex, Date x)
  • void setDate(int parameterIndex, Date x, Calendar cal)

O Calendar serve para determinar o timezone. Se você usar a versão sem ele, as informações de timezone utilizadas são as da JVM na qual o programa está rodando.

O Date é um java.sql.Date. Você está utilizando esse construtor para construir um objeto desse tipo. Se quiser continuar usando esse, é só pegar os millis da sua data do tipo java.util.Date. Se quiser usar o outro construtor, é só passar dia, mês e ano.

Dayson_Rodrigues

hum… entendi!
Obrigado!

Dayson_Rodrigues

Para que eu possar salvar uma Data específica não essa atual como poderia fazer?

Eu ia setando os atributos do Objetos até aqui OK, e quando chego na data não sei como fazer para informar uma data X?

Tarefa tarefa = new Tarefa();
	tarefa.setFinalizado(true);
	tarefa.setDataFinalizacao(Calendar.getInstance());
	tarefa.setDescricao("Blá Blá Blá");
	
	JdbcTarefaDao dao = new JdbcTarefaDao();
	dao.adiciona(tarefa);
Criado 22 de julho de 2017
Ultima resposta 22 de jul. de 2017
Respostas 3
Participantes 2