diff options
Diffstat (limited to 'src/clojure/contrib/sql.clj')
-rw-r--r-- | src/clojure/contrib/sql.clj | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/src/clojure/contrib/sql.clj b/src/clojure/contrib/sql.clj index 172cd190..d569ead5 100644 --- a/src/clojure/contrib/sql.clj +++ b/src/clojure/contrib/sql.clj @@ -16,8 +16,12 @@ ;; Created 2 April 2008 (ns clojure.contrib.sql + (:use [clojure.contrib.def :only (defvar)]) (:use clojure.contrib.sql.internal)) +(defvar connection connection* + "Returns the current database connection (or throws if there is none)") + (defmacro with-connection "Evaluates body in the context of a new connection to a database then closes the connection. db-spec is a map containing string values for @@ -42,7 +46,7 @@ "Executes SQL commands that don't return results on the open database connection" [& commands] - (with-open [stmt (create-statement)] + (with-open [stmt (.createStatement (connection))] (doseq [cmd commands] (.addBatch stmt cmd)) (.executeBatch stmt))) @@ -51,7 +55,7 @@ "Executes a prepared statement on the open database connection with parameter sets" [sql & sets] - (with-open [stmt (prepare-statement sql)] + (with-open [stmt (.prepareStatement (connection) sql)] (doseq [set sets] (doseq [[index value] (map vector (iterate inc 1) set)] (.setObject stmt index value)) @@ -107,7 +111,7 @@ "Executes a query and then evaluates body with results bound to a seq of the results" [results sql & body] - `(with-open [stmt# (prepare-statement ~sql) + `(with-open [stmt# (.prepareStatement (connection) ~sql) rset# (.executeQuery stmt#)] (let [~results (resultset-seq rset#)] ~@body))) |