为了账号安全,请及时绑定邮箱和手机立即绑定

如何修复:“参数索引超出范围(2 > 参数数量,即 1)。”

如何修复:“参数索引超出范围(2 > 参数数量,即 1)。”

largeQ 2023-08-23 14:58:24
如果我尝试通过 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)”。
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

当问号?是字符串文字的一部分时,不会将其解释为参数指示符。这就是为什么里面的问号'?/0/? 00:00:00.00''?/31/? 23:59:59.999'不被算作准备好的语句的参数;只计算?内部userid = ?,因为它是唯一“露天”的。

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


查看完整回答
反对 回复 2023-08-23
  • 1 回答
  • 0 关注
  • 91 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信