首页 >数据库 >mysql教程 >为什么我的 Java 代码会抛出'参数索引超出范围”SQL 异常?

为什么我的 Java 代码会抛出'参数索引超出范围”SQL 异常?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-27 00:48:17666浏览

Why Does My Java Code Throw a

SQL 异常中参数索引超出范围:原因及解决方案

遇到异常“java.sql.SQLException: Parameter index out of数据库插入期间“范围(1 > 参数数量,为 0)”可能会令人沮丧。当您尝试在准备好的语句中设置参数值,而 SQL 查询缺少这些参数相应的占位符 (?) 时,会发生此错误。

错误原因:

当您尝试在PreparedStatement上使用setXxx()方法,但SQL查询字符串没有指定参数所需的占位符时,会出现此错误index.

错误代码示例:

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

preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // This will 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 开始.
  • 您应该避免在占位符周围使用单引号或双引号。这样做会导致 SQL 解析器将它们解释为字符串值,从而导致相同的异常。

其他信息:

  • [JDBC 教程- 准备好了声明](https://docs.oracle.com/javase/7/docs/technotes/guides/jdbc/index.html#prepared)

以上是为什么我的 Java 代码会抛出'参数索引超出范围”SQL 异常?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn