如果我嘗試通過 Java (jdbc) 從 mySql 數據庫獲取時間戳(日期對象),我會收到錯誤:“參數索引超出范圍(2 > 參數數量,即 1)?!蔽以诨ヂ摼W上找不到適合我的解決方案,因為(我認為)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
提交
取消