number of parameters, which is 1)."-6ren"> number of parameters, which is 1)."-如果我尝试通过 Java (jdbc) 从我的 mySql 数据库中获取时间戳(日期对象),我会收到错误消息:“参数索引超出范围(2 > 参数数量,即 1)。” 我无法在互联网上找到适合我的解决方案,-6ren">
gpt4 book ai didi

java - 如何修复 : "Parameter index out of range (2 > number of parameters, which is 1)."

转载 作者:行者123 更新时间:2023-11-29 05:47:46 25 4
gpt4 key购买 nike

如果我尝试通过 Java (jdbc) 从我的 mySql 数据库中获取时间戳(日期对象),我会收到错误消息:“参数索引超出范围(2 > 参数数量,即 1)。”

我无法在互联网上找到适合我的解决方案,因为(我认为)sql 查询是正确的并且我放置了确切数量的“?”需要。

PreparedStatement st = conn.prepareStatement("SELECT * FROM timestamp WHERE stampTime BETWEEN '?/0/? 00:00:00.00' AND '?/31/? 23:59:59.999' AND userid = ? ");
st.setInt(1, month);
st.setInt(2, year); //It crashes here
st.setInt(3, month);
st.setInt(4, year);
st.setInt(5, uId);
ResultSet rs = st.executeQuery();

我希望准备好并执行该语句,但我收到错误“参数索引超出范围(2 > 参数数量,即 1)。”

最佳答案

问号 ? 当它们是字符串文字的一部分时,不会被解释为参数指示符。这就是为什么 '?/0/? 里面有问号的原因00:00:00.00''?/31/? 23:59:59.999' 不算作预处理语句的参数;只有 userid = ? 中的 ? 被计算在内,因为它是唯一一个“公开”的。

您可以通过在 Java 程序中构建范围的结束日期并将它们绑定(bind)到 stampTime BETWEEN 中的参数来解决此问题? AND ? 条件。

关于java - 如何修复 : "Parameter index out of range (2 > number of parameters, which is 1).",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067934/

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