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

2023-12-15

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

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

这是如何引起的以及如何解决?


当您调用任何一个时,您将收到此错误setXxx()上的方法PreparedStatement,而 SQL 查询字符串没有任何占位符?为了这。

例如这是wrong:

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你所做的not需要像这样引用那些占位符:

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

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

也可以看看:

  • JDBC 教程 - 准备好的语句
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java.sql.SQLException 参数索引超出范围(1 > 参数数量,即 0)[关闭] 的相关文章

随机推荐