如何按Id更新行

时间:2018-02-01 11:03:19

标签: javascript java mysql angularjs

我正在尝试使用Java mysql和angular js通过其Id更新行 问题是我变得虚假,数据库中没有任何变化

这是我的java函数:

public boolean modifierClient(int idclient, String nomcomplet, String mail,int numerocompte, String mdp) {
            try 
            {
                System.out.println("Edition du client avec le nom complet: " + idclient);
                Connection con = Connexion.getConnection();

             // L'insert avec mysql
                String query = " UPDATE client SET nomcomplet = ?, mail = ?, numerocompte = ?, mdp = ? WHERE idclient = ?";

                PreparedStatement ps = con.prepareStatement(query);
                ps.setInt(1, idclient);
                ps.setString (2, nomcomplet);
                ps.setString (3, mail);
                ps.setInt (4, numerocompte);
                ps.setString (5, mdp);

                ps.executeUpdate();
                if(ps.executeUpdate() > 0) {
                    return true;

                }
                else 
                {
                    return false;
                }
            }

            catch (Exception e) 
            {
                    System.out.println("Erreur avec modifierClient() -->" + e.getMessage());
                    return false;
            }
        }

这是我的控制器功能:

    @POST
        @Path("modifierClient/{idclient}/{nomcomplet}/{mail}/{numerocompte}/{mdp}")
        @Produces(MediaType.APPLICATION_JSON)
        @Consumes(MediaType.APPLICATION_JSON)
        public boolean modifierClient(@PathParam("idclient") int idclient, @PathParam("nomcomplet") String nomcomplet, @PathParam("mail") String mail,@PathParam("numerocompte") int numerocompte, @PathParam("mdp") String mdp) {
                 ClientDao dao = new ClientDao();
             return dao.modifierClient(idclient,nomcomplet,mail,numerocompte,mdp);
        } 

和我的角度js功能:

$http.post('rest/client/modifierClient/'+idclient+'/'+$scope.fullname+'/'+$scope.mail+'/'+$scope.numcompte+'/'+$scope.mdp).then(function(data){
                    alert('modified  '+data.data);

                })

我需要你的帮助,谢谢你。

2 个答案:

答案 0 :(得分:1)

您没有在PreparedStatement中使用正确的索引。请参阅以下代码中使用的索引

String query = " UPDATE client SET nomcomplet = ?, mail = ?, numerocompte = ?, mdp = ? WHERE idclient = ?";

PreparedStatement ps = con.prepareStatement(query);

ps.setString (1, nomcomplet);
ps.setString (2, mail);
ps.setInt (3, numerocompte);
ps.setString (4, mdp);

ps.setInt(5, idclient);

索引值取决于您在查询中定义的顺序。

注意:由于您尝试idClient = "apassword"idClient似乎是数字,因此您应该收到异常。 DB应告诉您无法将varchar与数字

进行比较

答案 1 :(得分:-1)

更改您的代码如下

 ps.setString (1, nomcomplet);
 ps.setString (2, mail);
 ps.setInt (3, numerocompte);
 ps.setString (4, mdp);
 ps.setInt(5, idclient);

 int rowsAffected = ps.executeUpdate();

 if( rowsAffected  > 0) {
     return true;
 }
 else {
     return false;
 }