我在Clojure中使用Clojure.java.jdbc進行數據庫訪問。 我想用select語句來準備語句。準備好的聲明中傳遞的動態值
從我剛纔的問題我得到了這樣的答案,
(jdbc/query (:conn dbinfo)
["select * from users where username = ? and password = ?"
"harikk09"
"amma123"])
這也是工作。
現在,
此參數列表我想使動態。所以我寫了一個函數,如
(defn values-builder (fn[param] (:value @(:value (param 1)))))
它實際上工作正常,並返回使用println值的集合。
(println (map values-builder params))
給
(harikk09 amma123)
但是,當我試圖像這樣,在SQL查詢就是前面提到的查詢
(jdbc/query (:conn dbinfo) sql-query (map values-builder params))
執行它,它拋出一個異常:
Caused by: java.lang.IllegalArgumentException: No value supplied for key:
[email protected]
任何人都可以幫助m e糾正這個錯誤?
我認爲clojure期望沒有()或[]的參數列表。
感謝您的回覆。我試過了,得到一個異常: 引起:java.sql.SQLException:如果你想將所有參數的集合作爲單獨的參數應用到一個函數,那麼沒有爲參數1 – Harikrishnan
apply指定值。在這裏他需要將一個集合的項目添加到第二個參數中,該參數應該是字符串和準備值的集合。所以沒有部分和適用的組合將使這項工作。 – NielsK