如何修复:"Parameter index out of range (2 > number of parameters, which is 1)."
How to fix: "Parameter index out of range (2 > number of parameters, which is 1)."
如果我尝试通过 Java (jdbc) 从我的 mySql 数据库中获取时间戳(日期对象),我会收到错误消息:"Parameter index out of range (2 > number of parameters, which is 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();
我希望语句准备好并执行,但我收到错误 "Parameter index out of range (2 > number of parameters, which is 1)."
当问号 ?
是字符串文字的一部分时,它们不会被解释为参数指示符。这就是为什么 '?/0/? 00:00:00.00'
和 '?/31/? 23:59:59.999'
中的问号不算作准备语句的参数;只计算userid = ?
里面的?
,因为只有"in the open".
您可以通过在 Java 程序中构造范围的结束日期并将它们绑定到 stampTime BETWEEN ? AND ?
条件内的参数来解决此问题。
如果我尝试通过 Java (jdbc) 从我的 mySql 数据库中获取时间戳(日期对象),我会收到错误消息:"Parameter index out of range (2 > number of parameters, which is 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();
我希望语句准备好并执行,但我收到错误 "Parameter index out of range (2 > number of parameters, which is 1)."
当问号 ?
是字符串文字的一部分时,它们不会被解释为参数指示符。这就是为什么 '?/0/? 00:00:00.00'
和 '?/31/? 23:59:59.999'
中的问号不算作准备语句的参数;只计算userid = ?
里面的?
,因为只有"in the open".
您可以通过在 Java 程序中构造范围的结束日期并将它们绑定到 stampTime BETWEEN ? AND ?
条件内的参数来解决此问题。