【发布时间】:2014-02-28 05:55:48
【问题描述】:
我正在使用 Clojure.java.jdbc 访问 clojure 中的数据库。 我想在 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-query 是前面提到的查询
(jdbc/query (:conn dbinfo) sql-query (map values-builder params))
,它抛出一个异常:
Caused by: java.lang.IllegalArgumentException: No value supplied for key:
Clojure.lang.LazySeq@ab5111fa
谁能帮我纠正这个错误?
我认为 clojure 需要一个不带 () 或 [] 的参数列表。
【问题讨论】: