Enviar datas do tipo TIMESTAMP via Android

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());
                    }
                });
            }
        });

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());

Como fica o PreparedStatement?
Estou usando jdbc.

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

1 curtida

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!");

Coloquei o now() depois que vc falou.

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()**)

Entendi, falta de atenção minha.

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

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

1 curtida

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