首页 >Java >java教程 >为什么我的 JavaPreparedStatement 抛出'参数索引超出范围”?

为什么我的 JavaPreparedStatement 抛出'参数索引超出范围”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-12-25 21:31:09790浏览

Why Does My Java PreparedStatement Throw

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

问题

您在尝试将数据插入数据库时​​遇到错误,并伴有消息“java.sql.SQLException:参数索引超出范围(1 > 参数数量,为 0)”。

原因

当您在 SQL 查询中未指定占位符 (?) 的情况下对PreparedStatement 调用 setXxx() 方法时,会发生此错误。例如:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Error occurs here

解决方案

要解决此问题,请在 SQL 查询中包含占位符:

String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
PreparedStatement preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);

请注意,参数索引从 1 开始,并且有无需在 SQL 字符串中引用占位符。这样做会导致同样的错误。

其他资源

  • [JDBC 教程 - 准备好的语句](https://docs.oracle.com/javase/tutorial/jdbc/基础知识/prepared.html)

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

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