【发布时间】:2018-06-01 16:18:10
【问题描述】:
我正在使用 java.jdbc 处理来自 clojure 的 postgres 数据库。
[org.clojure/clojure "1.7.0"]
[org.clojure/java.jdbc "0.6.1"]
[org.postgresql/postgresql "9.4-1201-jdbc41"]
我想使用如下代码对数据库执行“更新插入”操作:
(if (-> updatesU count pos?) (sql/execute! spec ["insert into users(id, name) values (?, ?) on conflict(id) do update set name=EXCLUDED.name;"] updatesU {:multi? true} ))
(if (-> updatesTE count pos?) (sql/execute! spec ["insert into time_entries(id, spent_date, hours, userid, project, task) values (?, ?, ?, ?, ?, ?) on conflict(id) do update set spent_date=EXCLUDED.spent_date, hours=EXCLUDED.hours;"] updatesTE {:multi? true} )))
文档似乎没有示例,所以我有点迷失了解决方案。
我收到此错误:
Exception in thread "main" clojure.lang.ArityException: Wrong number of args (4) passed to: jdbc/execute!
任何帮助都会很棒。
【问题讨论】:
-
根据文档,它需要 2 个或 3 个参数:clojure.github.io/java.jdbc/#clojure.java.jdbc/execute!
-
你的
if应该有一个 else 身体吗?你有错位的支架吗?如果它不应该有一个 else 主体,when将是一个更好的选择,所以这一点很清楚。
标签: java postgresql jdbc clojure