如何使用 clojure jdbc 执行?

Posted

技术标签:

【中文标题】如何使用 clojure jdbc 执行?【英文标题】:How do I use clojure jdbc execute? 【发布时间】:2013-10-26 23:24:55 【问题描述】:

我正在努力让 jdbc/execute! 函数提交我对我的 sqlite 数据库所做的任何更改。

例如,

user=> (jdbc/execute! sqlite-db ["insert into person (second_name) values ('Gandhi');"])
nil

nil 被返回并且该行没有被插入。但是,我知道该函数以某种方式连接到数据库,因为我可以使用无效的表名并收到错误:

user=> (jdbc/execute! sqlite-db ["insert into ABCDEFG (second_name) values ('Gandhi');"])

SQLException [SQLITE_ERROR] SQL error or missing database (no such table: ABCDEFG)  org.sqlite.DB.newSQLException (DB.java:383)

jdbc 库还包含一个jdbc/insert! 函数,我可以使用它正确插入。但是,我想改用 execute! 函数,因为在我的应用程序中我使用了更复杂的语句,因此我想我会提供一个参数化的 sql 字符串。

使用execute! 函数我哪里出错了?

【问题讨论】:

执行!需要在事务中才能提交? 这两种情况都会发生,但正如 PositiveLogic 所提到的,我现在看到这是一个已知问题。 【参考方案1】:

在给出这个答案时 -> Using execute! with no params to insert a row fails on SQLite

【讨论】:

以上是关于如何使用 clojure jdbc 执行?的主要内容,如果未能解决你的问题,请参考以下文章

如何做批处理 jdbc/insert!和 jdbc/更新!在 Clojure 中使用 postgresql?

如何使用 clojure.java.jdbc 插入包含时间戳值的行?

java.jdbc clojure 执行!插入数量

如何使用 next.jdbc 将 SQLite 中的 bool 列读入 bool Clojure 值? SQLite 将布尔值存储为 0/1

Clojure PostgreSQL JDBC执行查询时不断出错

使用clojure.java.jdbc在Clojure中使用外键约束