gpt4 book ai didi

java.sql.SQLException 参数索引超出范围(1 > 参数数量,即 0)

转载 作者:行者123 更新时间:2023-12-01 19:58:34 24 4
gpt4 key购买 nike

验证我选择的选择组合框后,我无法将其插入到我的数据库中。 Tomcat 出现以下错误:

java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

这是怎么造成的,如何解决?

最佳答案

当您在 PreparedStatement 上调用任何 setXxx() 方法时,如果 SQL 查询字符串没有任何占位符,您将会收到此错误? 为此。

例如,这是错误:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

您需要相应地修复 SQL 查询字符串以指定占位符。

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);

请注意,参数索引以 1 开头,并且您不需要需要像这样引用这些占位符:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";

否则您仍然会得到相同的异常,因为 SQL 解析器会将它们解释为实际的字符串值,因此无法再找到占位符。

另请参阅:

关于java.sql.SQLException 参数索引超出范围(1 > 参数数量,即 0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59019396/

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