【发布时间】: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 所提到的,我现在看到这是一个已知问题。