在更新mysql表时发出编译准备语句的问题

时间:2016-04-20 12:04:50

标签: mysql jsp

我已经创建了一个表单,使用JSP将数据填充到MySQL表中。在更新部分中,当我输入具有预期主键值的数据并点击提交按钮时,它只是在做空白页面。

我是java编程的新手请帮助。

<%
//jsp prog for database connection
Connection conn = null;
PreparedStatement pstatement = null;

try {

        String candidate = request.getParameter("candidate");

       // So on....

            Connection conn=ConnectionProvider.getConn();  


        int updateQuery = 0;

        if(candidate!=null && phone!=null && recname!=null && ofrdate!=null &&     ofrstat!=null && ofrdctc!=null && DOJ!=null && month!=null && jngstat!=null)
        {

            if(candidate!="" && phone!="" && recname!="" && ofrdate!="" && ofrstat!="" && ofrdctc!="" && DOJ!="" && month!="" && jngstat!="")
            {
               String queryString =("UPDATE mytable SET recname=?,ofrdate=?,ofrstat=?,ofrdctc=?,DOJ=?,month=?,jngstat=? WHERE phone=?");

                pstatement = conn.prepareStatement(queryString);

                pstatement.setString(1, phone);

                pstatement.setString(2, recname);

                pstatement.setString(3, ofrdate);

                pstatement.setString(4, ofrstat);

                pstatement.setString(5, ofrdctc);

                pstatement.setString(6, DOJ);

                pstatement.setString(7, month);

                pstatement.setString(8, jngstat);

                updateQuery = pstatement.executeUpdate();
        }  // end 



    } // end of try
    // catch exception block
    // finally block
%>

1 个答案:

答案 0 :(得分:0)

我认为错误就在这里:

String queryString =("UPDATE mytable SET recname=?,ofrdate=?,ofrstat=?,ofrdctc=?,DOJ=?,month=?,jngstat=? WHERE phone=?");

pstatement = conn.prepareStatement(queryString);

pstatement.setString(1, phone);

pstatement.setString(2, recname);

pstatement.setString(3, ofrdate);

pstatement.setString(4, ofrstat);

pstatement.setString(5, ofrdctc);

pstatement.setString(6, DOJ);

pstatement.setString(7, month);

pstatement.setString(8, jngstat);

您的外卡与pstatement.setString(int, String);之间没有对应关系,您应该按照它们在查询字符串中显示的顺序进行设置。

例如,第一张外卡指的是recname字段,但您将其设置为:pstatement.setString(1, phone);

可能是更新失败的原因。

尝试从字符串recname开始依次设置通配符,并将第8个设置为字符串phone

pstatement.setString(1, recname);

pstatement.setString(2, ofrdate);

pstatement.setString(3, ofrstat);

pstatement.setString(4, ofrdctc);

pstatement.setString(5, DOJ);

pstatement.setString(6, month);

pstatement.setString(7, jngstat);

pstatement.setString(8, phone);