Como somar um valor com o valor existente no banco de dados

7 respostas
bancojspjavasqlserver
J

Nao esta somando só esta mudando o valor.

servelet

protected void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType(text/html;charset=UTF-8);

String questao = request.getParameter(questao);

UsuarioDao dao= new UsuarioDao();

Usuario usuario = new Usuario();

PreparedStatement pst = null;

DBConnection con = null;

System.out.println(questao);
if (questao.equals("op1")) {
            System.out.println("");
        } else if (questao.equals("op2")) {
            System.out.println("");
        } else if (questao.equals("op3")) {
            pontuacao += usuario.getPontuacao()+ 100;
        } 
       
    
        /* TODO output your page here. You may use following sample code. */
     
  usuario.setPontuacao(pontuacao );
   dao.ValidarResposta(usuario); 
   String redirectURL = "listarUsuarios.jsp"; 
   response.sendRedirect(redirectURL);   
   
   

 
  
    }

}

o dao

public boolean ValidarResposta(Usuario usuario) {

String sql =

"update usuario set pontuacao=?  ";

UsuarioDao usuarioDao = new UsuarioDao();
try { 
         PreparedStatement pst = con.prepareStatement(sql);
        pst = con.prepareStatement(sql);
        pst.setInt(1, usuario.getPontuacao()); 
           pst.setString(2, usuario.getEmail()); 
        
      
        
        int res = pst.executeUpdate();
        if (res == 1) {   
            
            return true;
        }
    } catch (SQLException e) {
        throw new RuntimeException(e);
    } 
    
    return false; 
}

7 Respostas

darlan_machado

A única abordagem que vejo é você fazer um select, obter a pontuação, somar no java e, então, executar o update.
É possível fazer via banco de dados ou na query, mas acho mais complicado.

J

darlan como eu faço isso?

darlan_machado

No DAO, você tem a linha acima.
Você teria que realizar um select anterior:

String select = "SELECT pontuacao FROM usuario WHERE...";

E, ao obter o valor da pontuação, somar + 1, aí sim você deve fazer o update.

Eu disse acima que era mais complicado fazer na query, mas, me equivoquei.
Dá uma olhada nessa thread

J
darlan deu certo!

agora ele consegue somar

public boolean ValidarResposta(Usuario usuario) {

String sql =

update usuario set pontuacao= pontuacao +1 where cpf=1234567;

UsuarioDao usuarioDao = new UsuarioDao();

só que o problema é que eu determinei que seria esse cpf mas como eu colocaria para qualquer pessoa que logasse

darlan_machado

Cara, você precisa parar e repensar teu sistema.
Afinal, programação não é só sair codificando, você precisa seguir um roteiro (na verdade, vários), o mais importante: atender aos requisitos do sistema.
Se você não definiu de forma clara e sustentável (que pode se manter ante a questionamentos, o teu sistema não deve ser desenvolvido.
Com relação a isso, é simples: se você tem o CPF do usuário, basta substituir o método que atualiza por algo assim

public boolean validarReposta(Usuario usuario){
    String sql = "UPDATE usuario SET pontuacao = (pontuacao + 1) WHERE CPF = ?";
}

E daí setar o valor do cpf para completar a instrução.

J
eu fiz mas embora tenha rodado ele nao consegue se remeter a pontuacao

public Boolean existe(Usuario usuario) {

String sql=

SELECT * FROM usuario WHERE email=’”+ usuario.getEmail() + “’ AND senha=  + usuario.getSenha()+”’”;
try {
        PreparedStatement pst = con.prepareStatement(sql);
        pst = con.prepareStatement(sql);
      
        ResultSet rs = pst.executeQuery();
         
        while (rs.next()) {
            Usuario a = new Usuario();
            a.setEmail(rs.getString("email"));
            a.setSenha(rs.getString("senha"));
       
        }
    
    } catch (SQLException ex) {
        throw new RuntimeException (ex);
    }

return true;
}

darlan_machado

Fez o que?
Consegue me explicar por que o método “existe” não retorna o usuário que está logando? Aliás, por que se chama “existe” se poderia ser “login” e retornar o usuario com todos os seus dados, incluindo, CPF e pontuação atual?

Criado 25 de janeiro de 2018
Ultima resposta 25 de jan. de 2018
Respostas 7
Participantes 2