Gravar no mysql data do sistema

5 respostas
M

Olá pessoal,

Antes de postar esta dúvida, dei uma olhada no forum e continuo com a dúvida: Como faço para pegar a data do sistema e salvar em um BD mysql?

Para pegar a data do sistema, usei o código abaixo e funciona.

static public void main(String args[]){ Date d = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd HH:MM:ss"); System.out.println(formatter.format(d)); }

Mas, não estou conseguindo salvar no mysql.
Alguém tem uma dica de código ou mesmo um tutorial onde eu possa solucionar minha dúvida?

Obrigada.

5 Respostas

D

Você tem duas alternativas:

  1. usar a função NOW() pertecente ao MySQL. Exemplo: “insert into minhatabela (nome, lastlogin) values (‘Daniel’, NOW())”;
  2. usar o método setDate() da interface java.sql.ResultSet.
M

Olá Daniel,

Obrigada pelas dicas, entretanto não obtive sucesso.
Desculpe, sou novata. :oops:

Tentei utilizar o Now() e não funcionou.

Li o API no site da Sun e fiz o seguinte código:

java.sql.Date d = new java.sql.Date();
                  String sql = "UPDATE Usuario" +
                                  " SET data_ult_login = '" + d + "'" +
                                  " WHERE login = '" + user + "'" +
                                  " AND senha = '" + password + "'";
                  stm.executeUpdate(sql);

Quando compilo, o retorno é a seguinte mensagem:

Login.java:264: cannot resolve symbol

symbol : constructor Date()

location: class java.sql.Date

java.sql.Date d = new java.sql.Date();

O que estou fazendo de errado?
Será que alguém sabe me dizer?

V

Oi,
tenta fazer da seguinte forma:

Date date = new Date();

String sql = "UPDATE Usuario SET data_ult_login = ? WHERE login = ? and senha = ?";

PreparedStatement ps = conn.prepareStatement(sql);
	ps.setTimestamp(1, new java.sql.Timestamp(date.getTime()) );
	ps.setString(2, user);
	ps.setString(3, password);

	ps.execute();

Por quê eu fiz dessa maneira e não da mesma que você tentou fazer?
Porque dessa forma eu não preciso me preocupar em ficar concatenando as informações, nem formatando as datas e outros formatos para àqueles que o bando de dados espera. A própria implementação do driver faz isso por mim.

Uma outra coisa também: eu suponho que no seu sistema não exista usuários com usernames repetidos, então, como você só esta querendo setar a data de último logon, não é necessário você colocar no WHERE a senha do usuário, somente o username já bastaria…

No mais, você deve dar uma olhada no javadoc do PreparedStatement para conhecer os outros métodos que você por ultilizar.

Até mais,
Tiago

M

Olá Tiago,

Muito obrigada pela dica.
Agora funcionou!

Realmente da maneira como você mostrou, fica bem mais simples. :smiley:

Mariane

M

Olá Tiago!

Parabéns pela resposta!
Tive muitos problemas com essa conversão!
Após percorrer muitos tópicos sobre o assunto, a sua resposta me salvou!
Agora tenho que resolver problemas com estouro de pilha (java.lang.StackOverflowError).

Obrigada!
Att,
Marina

Criado 24 de julho de 2004
Ultima resposta 30 de jul. de 2011
Respostas 5
Participantes 4