(sql/with-connection *db-atom* (insert-data value1 value2)
(sql/with-connection *db-atom* (read-tuple-as-map)))
上記の例から、入れ子になっsql/with-connection
たものは DB への新しい接続を開きますか? それとも、以前に作成されたものを使用しますか?
(sql/with-connection *db-atom* (insert-data value1 value2)
(sql/with-connection *db-atom* (read-tuple-as-map)))
上記の例から、入れ子になっsql/with-connection
たものは DB への新しい接続を開きますか? それとも、以前に作成されたものを使用しますか?
一般的には、clojure.contrib.sql の代わりに clojure.java.jdbc を使用することをお勧めします。なぜなら、後者は 1.2.0 より新しい clojure では動作しないはずだからです。
clojure.java.jdbcでは、バインディングを使用して、ラップされた呼び出しのdbwith-connection
var内の接続のマップに接続を追加するため、2 番目のものが最初のものを上書きします。
から: 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))))