(sql/with-connection *db-atom* (insert-data value1 value2)
(sql/with-connection *db-atom* (read-tuple-as-map)))
从上面的示例中,嵌套是否sql/with-connection
打开了与数据库的新连接?还是使用之前创建的那个?
(sql/with-connection *db-atom* (insert-data value1 value2)
(sql/with-connection *db-atom* (read-tuple-as-map)))
从上面的示例中,嵌套是否sql/with-connection
打开了与数据库的新连接?还是使用之前创建的那个?
我一般建议使用 clojure.java.jdbc 而不是 clojure.contrib.sql,因为后者不应该与 1.2.0 之后的 clojure 一起使用。
在 clojure.java.jdbc 中,使用绑定将连接添加到dbwith-connection
var中的连接映射以用于任何包装的调用,因此第二个将覆盖第一个。
来自:jdbc.clj
(defn with-connection*
"Evaluates func in the context of a new connection to a database then
closes the connection."
[db-spec func]
(with-open [^java.sql.Connection con (get-connection db-spec)]
(binding [*db* (assoc *db* :connection con :level 0 :rollback (atom false))]
(func))))