Problema para pegar a Data e salvar no banco

Quero pegar a data atual do computador e salvar no banco, sem que a pessoa necessite setar data.
Mas quando vou rodar, dá erro na linha do PreparedStatement.

        } else if ("I".equals(acao)) {
	String texto = request.getParameter("edTexto");
	Date data = new Date(System.currentTimeMillis());
	
	String sql = "INSERT INTO TEXTO (titulo, texto, data) VALUES (?, ?, ?, ?)";
	PreparedStatement cmd = con.prepareStatement(sql);
	cmd.setString(1, titulo);
	cmd.setString(2, texto);
	cmd.setDate(3, new java.sql.Date(data.getTime()));
	cmd.executeUpdate();

Alguém poderia me ajudar?

Olá,

O número de argumentos declarados no seu Values é 4, porem você só esta especificando 3, remova uma interrogação e tente salvar.

abraço!

Funcionou, obrigada, amigo!

Um jeito mais simples é usar o próprio banco de dados para fornecer a data atual através da expressão CURRENT_DATE.

String sql = "INSERT INTO TEXTO (titulo, texto, data) VALUES (?, ?, CURRENT_DATE)"; 
PreparedStatement cmd = con.prepareStatement(sql); 
cmd.setString(1, titulo); 
cmd.setString(2, texto); 
cmd.executeUpdate(); 

Se tanto a aplicação java quanto ao banco de dados estiverem no mesmo timezone, o codigo acima será aplicável.

Enfim… Maneiras diferentes de se fazer a mesma coisa.

att