我正在尝试使用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);
})
我需要你的帮助,谢谢你。
答案 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;
}