0

我是 JSP 页面和 servlet 的新手,并且我在 servlet 中有一条更新语句。这里是:

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();

当我执行它时,有一个错误提示 java.sql.SQLException: Parameter index out of range (8 > number of parameters, which is 7)。我怎样才能解决这个问题?

谢谢

4

1 回答 1

3

检查您的PreparedStatement

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

sql 中有 7 个?占位符,PreparedStatement您正在设置 8 个参数。它可能应该是:

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

你可能错过了放在=?,后面address

注意: JSP 用于查看。禁止在里面写业务逻辑。还应避免使用小脚本。有一个 Controller 或 Servlet 来做业务逻辑。

于 2013-07-02T07:53:55.223 回答