Enviar datas do tipo TIMESTAMP via Android

10 respostas Resolvido
androiddata
C

Pessoal,

Estou desenvolvendo um aplicativo em android e para gravar os dados no BD Mysql estou usando um webservice restful onde faço a persistência com jdbc, gostaria de gravar em uma tabela a data atual do servidor, o tipo de dado da coluna data tá definido como timestamp, a dúvida é, como enviar do aplicativo android o comando que irá gravar a data e hora do servidor no banco?

De acordo com o código abaixo eu consigo gravar somente a data outro detalhe, ele está pegando a data do android e não do servidor:

Pedidos pedidos = new Pedidos(txt,"pendente",comentario.getText().toString(),
                        opcaoSelecionada,id, new Timestamp(System.currentTimeMillis()));

                Call<Boolean> call = ApiClient.getUsuario().criaPedido(pedidos);
                call.enqueue(new Callback<Boolean>() {
                    @Override
                    public void onResponse(Call<Boolean> call, Response<Boolean> response) {
                        if (response.body().equals(true)){
                            AlertDialog.Builder dialogo1 = new AlertDialog.Builder(PedidosActivity.this);
                            dialogo1.setTitle("Parabéns!");
                            dialogo1.setMessage("Pedido realizado com sucesso!");
                            dialogo1.setNeutralButton("ok", null);
                            dialogo1.show();
                            progressDialog.dismiss();

                            Log.d("my_tag", "Aceito: " + response.code());
                            Log.d("my_tag", "Aceito: pedido realizado com sucesso! " + response.isSuccessful());
                        }else{
                            Log.d("my_tag", "Recusado: existe um pedido em aberto!: " + response.body());
                            AlertDialog.Builder dialogo1 = new AlertDialog.Builder(PedidosActivity.this);
                            dialogo1.setTitle("Erro!");
                            dialogo1.setMessage("Você possui um pedido em aberto!");
                            dialogo1.setNeutralButton("ok", null);
                            dialogo1.show();
                            progressDialog.dismiss();
                        }
                    }
                    @Override
                    public void onFailure(Call<Boolean> call, Throwable t) {
                        if (progressDialog.isShowing())
                            progressDialog.dismiss();
                        Toast.makeText(getBaseContext(), "Falha na conexão!", Toast.LENGTH_LONG).show();
                        Log.d("my_tag", "ERROR: " + t.getMessage());
                    }
                });
            }
        });

10 Respostas

L

Por que não invoca a função now() do MySQL em vez de inserir a data vinda do android?
INSERT INTO TABELA (coluna1, coluna2, colunaN, colunaQueVaiAData) VALUES (?, ?, ?, now());

C

Como fica o PreparedStatement?
Estou usando jdbc.

L

Como eu citei…
Mas, se quer que mostre na tua query, posta ela aí.

C
if (numPedidos == 0){

PreparedStatement stmt = null;

try {

stmt = conn.prepareStatement ("INSERT INTO pedidos (loja, status, comentario, quantidade, id_usuario, now()) "

+ “VALUES(?,?,?,?,?,?)”);

stmt.setString(1, pedidos.getLoja());

stmt.setString(2, pedidos.getStatus());

stmt.setString(3, pedidos.getComentario());

stmt.setInt(4, pedidos.getQuantidade());

stmt.setInt(5, pedidos.getId_usuario());

stmt.setTimestamp(6, new Timestamp(calendar.getTimeInMillis()));
sucesso = stmt.executeUpdate();
        if (sucesso > 0) {
             System.out.println("PEDIDO REALIZADO COM SUCESSO!");
C

Coloquei o now() depois que vc falou.

L

Tem certeza? Compara o que eu mostrei e o que você fez:
Você
INSERT INTO pedidos (loja, status, comentario, quantidade, id_usuario, **now()**) VALUES(?,?,?,?,?,?)
Eu:
INSERT INTO TABELA (coluna1, coluna2, colunaN, colunaQueVaiAData) VALUES (?, ?, ?, **now()**)

C

Entendi, falta de atenção minha.

C

Deixa essa linha: stmt.setTimestamp(6, new Timestamp(calendar.getTimeInMillis())); ou elimina?

L
Solucao aceita

Elimina, afinal, você não precisa mais dessa data.

C

Fluiu, agora ficou bem mais tranquilo, porque enviar do android tava osso.

Criado 20 de março de 2017
Ultima resposta 20 de mar. de 2017
Respostas 10
Participantes 2