如果我尝试通过 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 ?
条件内的参数来解决此问题。
添加回答
举报
0/150
提交
取消