Inserir Data e hora atual no banco de dados[RESOLVIDO]

7 respostas
vanessa.tenorio

Bom dia, pessoal!!!

Eu preciso inserir a data atual no banco de dados, no qual eu declarei a célula do como DATATIME, portanto ele recebe a data e a hora. Mas como eu posso estar passando a data e a horaa atual para o banco? Na verdade eu quero chamar este método de inserção, logo que um número tambem for inserido. Quanto ao número já está tudo ok, mas quanto a data e a hora... :(

Alguém poderia me ajudar? Eu construi o método abaixo para isto:
public void atualizaDataDepartamento() {

       Conexao.abrirConexao();
       GregorianCalendar d = new GregorianCalendar();
       Date data = d.get(Calendar.DATE);//ERRO
        String comando =  "INSERT INTO departamento (diaDepartamento) values (?)";
        try {
            PreparedStatement stmtInsert = Conexao.conexao.prepareStatement(comando);
            stmtInsert.setDate(2, data); //ERRO

            stmtInsert.executeUpdate();
            Conexao.fecharConexao();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Grata a todos!!!

7 Respostas

lele_vader

O parâmetro não é 1 não ?

Só vejo passando um parâmetro e você colocou na posição 2.

guilherme.dio

Você deve inserir como timestamp:

stmtInsert.setTimestamp(2,new java.sql.Timestamp(java.util.Calendar.getInstance().getTimeInMillis()));
g4j

lele_vader:
O parâmetro não é 1 não ?

Só vejo passando um parâmetro e você colocou na posição 2.

++

Veja mais sobre PreparedStatement na documentação:
http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

guilherme.dio

g4j:
lele_vader:
O parâmetro não é 1 não ?

Só vejo passando um parâmetro e você colocou na posição 2.

++

Veja mais sobre PreparedStatement na documentação:
http://docs.oracle.com/javase/6/docs/api/java/sql/PreparedStatement.html

É tem esse detalhe também, você deve passar o primeiro parâmetro que é o sinalizador da localização dos valores quie você quer “preparar” para inserir:

String comando = "Insert into pessoa(nome,sobrenome,idade,cidade) values(?,?,?,?);
stmtInsert.setString(1,"João");
stmtInsert.setString(2,"da Silva");
stmtInsert.setInt(3,25);
stmtInsert.setString(4,"Piraporinha da Serra");

Consegue visualizar como funciona ? o parametro diz qual das exclamações ele quer referenciar o valor…no caso ali:
1 - Nome
2 - Sobrenome
3 - Idade
4 - Cidade

Agora quanto a data e hora atual, é só ler meu post anterior que ta explicando, só utilizar Timestamp ao invés de Date.

vanessa.tenorio

Pessoal, muito obrigada pela ajuda. Fiz como sugeriram: alterei o código e declarei a varialvel no banco como Timestamp, porém o erro apresentado na execução é:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''2012-07-27 10:27:24.356'WHERE idTotalDepartamento =1' at line 1

Meu código possui a nova estrutura abaixo:
public void atualizaDataDepartamento() {

        Conexao.abrirConexao();
              
        String comando =  "UPDATE departamento SET "
                + "diaDepartamento '" + (new java.sql.Timestamp(java.util.Calendar.getInstance().getTimeInMillis())) + "'"
                 + "WHERE idTotalDepartamento =" + 1 + ";";
        try {
             PreparedStatement stmtDelete = Conexao.conexao.prepareStatement(comando);
            stmtDelete.executeUpdate();
            Conexao.fecharConexao();  
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
Voces sabem comol resolvo isto? Grata!
vanessa.tenorio

Pessoal, eu conclui que o problema está no milisegundos, que está aparecendo aqui como long: 10:27:24.356, porém no banco, ele deve aparecer apenas o valor inteiro. Como eu faço isto?

String comando = "UPDATE departamento SET " + "diaDepartamento '" + (new java.sql.Timestamp(java.util.Calendar.getInstance().getTimeInMillis())) + "'" + "WHERE idTotalDepartamento =" + 1 + ";";
Obrigada!!!

vanessa.tenorio

Pessoal, resolvi o problema!!!

Então, quando eu declarei a variável no banco como timestamp automaticamente ela pega a data e a hora atual, nao necessitanto que eu faça nenhuma atualização ou inserção.

Enfim, obrigada a todos pela ajuda!!!

Criado 27 de julho de 2012
Ultima resposta 27 de jul. de 2012
Respostas 7
Participantes 4