gpt4 book ai didi

java - 更新语句在 JSP 中不起作用

转载 作者:行者123 更新时间:2023-12-01 23:44:05 24 4
gpt4 key购买 nike

我是 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: 参数索引超出范围(8 > 参数数量,即 7)。我该如何解决这个问题?

谢谢

最佳答案

检查您的PreparedStatement :

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

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

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

您可能错过了输入 =?,之后address .

注意: JSP 用于查看。禁止在其中编写业务逻辑。还应避免使用 scriptlet。有一个 Controller 或Servlet来执行业务逻辑。

关于java - 更新语句在 JSP 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17420274/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com