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

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

Mary-Kate Olsen
发布: 2024-12-27 00:48:17
原创
661 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板