簡體   English   中英

如何解決:“參數索引超出范圍(2 > 參數數量,即 1)。”

[英]How to fix: “Parameter index out of range (2 > number of parameters, which is 1).”

如果我嘗試通過 Java (jdbc) 從我的 mySql 數據庫中獲取時間戳(日期對象),我會收到錯誤消息:“參數索引超出范圍(2 > 參數數量,即 1)。”

我在互聯網上找不到適合我的解決方案,因為(我認為)sql-query 是正確的,並且我放置了“?”的確切數量需要。

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' '?/0/? 00:00:00.00''?/31/? 23:59:59.999' '?/31/? 23:59:59.999'不計入prepared statement的參數; 只有? 里面的userid =? 被計算在內,因為它是唯一一個“公開”的。

您可以通過在 Java 程序中構造范圍的結束日期並將它們綁定到stampTime BETWEEN? AND?中的參數來解決此問題。 stampTime BETWEEN? AND? 健康)狀況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM