简体   繁体   English

更新声明在JSP中不起作用

[英]Update Statement does not work in JSP

I am new to JSP pages and servlets andI have an update statement in a servlet. 我是JSP页面和servlet的新手,并且在servlet中有一条update语句。 Here it is: 这里是:

PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
        "UPDATE users set username=?,password=?,name=?,surname=?,phone=?,address," +
        "email=? where username=?");
        checkDB.setString(8,request.getParameter("tUserName"));
        checkDB.setString(1,request.getParameter("tUserName"));
        checkDB.setString(2,request.getParameter("tPassword"));
        checkDB.setString(3,request.getParameter("tName"));
        checkDB.setString(4,request.getParameter("tSurName"));
        checkDB.setString(5,request.getParameter("tPhone"));
        checkDB.setString(6,request.getParameter("tAddress"));
        checkDB.setString(7,request.getParameter("tEmail"));
        result= checkDB.executeUpdate();

When i execute it, there is an error saying that java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 7). 当我执行它时,有一个错误消息说java.sql.SQLException:参数索引超出范围(8>参数数量,即7)。 How can i fix this? 我怎样才能解决这个问题?

Thanks 谢谢

Check your PreparedStatement : 检查您的PreparedStatement

PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
    "UPDATE users set username=?,password=?,name=?,surname=?,phone=?,address," +
    "email=? where username=?");

There are 7 ? 有7个? placeholders in the PreparedStatement sql and you are setting 8 parameters.It should probably be : PreparedStatement sql中的占位符,您正在设置8个参数,它可能应该是:

PreparedStatement checkDB = (PreparedStatement) con.prepareStatement(
    "UPDATE users set username=?,password=?,name=?,surname=?,phone=?,"+
    "address=?," + //You missed =?, here
    "email=? where username=?");

You probably missed to put =?, after address . 您可能错过了在address之后加上=?,

Note: JSPs are for view. 注意: JSP供查看。 Prohibit from writing business logic in it . 禁止在其中编写业务逻辑。 Use of scriptlets should also be avoided . 还应避免使用scriptlet。 Have a Controller or Servlet to do business logic. 有一个Controller或Servlet进行业务逻辑。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM