如何使用jquery将记录更新到mysql数据库?

时间:2015-03-31 11:28:03

标签: java jquery html mysql jsp

我在mysql数据库中有一个userdetails表,我已经使用jquery在onsubmit中插入了记录。(user_id,name,age,phone,email,text) 现在可以在html页面中使用jquery在列表中查看相同的记录,当我点击user_id(" 1"我作为href制作)时,所以当我点击1时,详细信息1包含将在我的user_details.html页面中查看,如

http://localhost:8082/JqueryForm/html/user_details.html?user_id=1

姓名:abc ---------->我的html页面中的textarea

电话:1000000

电子邮件:abc@gmail.com

年龄:20

text:abcdefghij

现在当我的user_details.html打开时只显示特定用户的详细信息时,我可以编辑值,因为它是textarea,并在更新按钮的帮助下更新数据库中相同user_id的值

我写了一个更新查询

public void update_UserDetails(int user_id ,String user_name, String age, 
        String mobile_no, String email_id,
        String ck_text) {
    try {
        prep = (PreparedStatement) connection
                .prepareStatement("update user_details set 
        user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
        user_id=?");
        prep.setInt(1, user_id);
        prep.setString(2, user_name);
        prep.setString(3, age);
        prep.setString(4, mobile_no);
        prep.setString(5, email_id);
        prep.setString(6, ck_text);
        prep.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}

并在我的user_details.jsp页面中调用该方法

<%
    Sql_Server server = new Sql_Server();
    String name = request.getParameter("name");
    String age = request.getParameter("age");
    String email = request.getParameter("email");
    String phone = request.getParameter("phone");
    String ck_text = request.getParameter("ck_text");
    String user_id = request.getParameter("user_id");
    int userid = Integer.parseInt(user_id);
    server.update_UserDetails(userid,name, age, phone, email,ck_text);
%>

现在当我在jquery中调用jsp页面时,值没有得到更新,有人可以帮助我理解为什么值不会更新?

$(document).ready(function(){
    $("#update").click(function(e) {
        var name = $("#nametext").val();
        var age = $("#agetext").val();
        var email = $("#emailtext").val();
        var phone = $("#phonetext").val();
        var ck_text = $("#textarea").val();
        var dataString = '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;

            $.ajax({
                type : "POST",
                url : 
             "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
                data : dataString,
                cache : false,
                success : function(result) {
                         alert("Records Updated Successfully");
                         }
            });
        return false;
    });
});

4 个答案:

答案 0 :(得分:2)

我注意到在你的jquery中,在你的ajax调用中,var dataString不包含你需要执行更新的user_id。同样在您的prepareStatement中,您的vars的顺序不受尊重。

  

.prepareStatement(&#34; update user_details set user_name =?,user_age =?,mobile_no =?,email_id =?,ck_text =?where   USER_ID =&#34;?);

     

prep.setInt(1,user_id); //应该在最后位置

     

prep.setString(2,user_name);

     

prep.setString(3,age);

     

prep.setString(4,mobile_no);

     

prep.setString(5,email_id);

     

prep.setString(6,ck_text);

     

prep.executeUpdate();

答案 1 :(得分:0)

您的问题可能与值的顺序有关,您将名称设置为user_id,将id设置为ck_text:

prep = (PreparedStatement) connection
        .prepareStatement("update user_details set 
user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where 
user_id=?");
prep.setInt(1, user_id);
prep.setString(2, user_name);
prep.setString(3, age);
prep.setString(4, mobile_no);
prep.setString(5, email_id);
prep.setString(6, ck_text);

答案 2 :(得分:0)

你正在分配错误的价值观 做如下

    prep.setString(1, user_name);
    prep.setString(2, age);
    prep.setString(3, mobile_no);
    prep.setString(4, email_id);
    prep.setString(5, ck_text);
    prep.setInt(6, user_id);

答案 3 :(得分:0)

@DDA描述了正确的答案。只是补充。

从网址http://localhost:8082/JqueryForm/html/user_details.html?user_id=1获取查询字符串 您可以使用以下代码(有关更详细的讨论,请参阅this post):

$(document).ready(function(){

    function getParameterByName(name) {
        name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
        var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
            results = regex.exec(location.search);
        return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
    }

    $("#update").click(function(e) {
        var name = $("#nametext").val();
        var age = $("#agetext").val();
        var email = $("#emailtext").val();
        var phone = $("#phonetext").val();
        var ck_text = $("#textarea").val();

        var user_id = getParameterByName('user_id');

        var dataString = 'user_id=' + user_id + '&name=' + name + '&age=' + age + '&email=' + email + '&phone=' + phone + '&ck_text=' + ck_text;

        $.ajax({
            type : "POST",
            url : 
         "http://localhost:8082/JqueryForm/html/jsp/update_userdetails.jsp",
            data : dataString,
            cache : false,
            success : function(result) {
                     alert("Records Updated Successfully");
                     }
        });
        return false;
    });
});

并且必须将更新语句更改为:

public void update_UserDetails(int user_id ,String user_name, String age, 
                               String mobile_no, String email_id,
                               String ck_text) {
    try {
        prep = (PreparedStatement) connection
                      .prepareStatement("update user_details set user_name=?,user_age=?,mobile_no=?,email_id=?,ck_text=? where user_id=?");

        prep.setString(1, user_name);
        prep.setString(2, age);
        prep.setString(3, mobile_no);
        prep.setString(4, email_id);
        prep.setString(5, ck_text);
        prep.setInt(6, user_id);

        prep.executeUpdate();
    } catch (SQLException e) {
        e.printStackTrace();
    }
}