aboutsummaryrefslogtreecommitdiff
path: root/src/clojure/contrib/sql.clj
diff options
context:
space:
mode:
Diffstat (limited to 'src/clojure/contrib/sql.clj')
-rw-r--r--src/clojure/contrib/sql.clj10
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)))