## 數據庫
Clojure Contrib里面的jdbc庫簡化了clojure對于關系型數據庫的訪問. 它通過commit和rollback來支持事務, 支持prepared statements, 支持創建/刪除表, 插入/更新/刪除行, 以及查詢。下面的例子鏈接到一個Postgres 數據庫并且執行了一個查詢。代碼的注釋里面還提到了怎么使用jdbc來連接mysql。
```
(use 'clojure.java.jdbc)
(let [db-host "localhost"
db-port 5432 ; 3306
db-name "HR"]
; The classname below must be in the classpath.
(def db {:classname "org.postgresql.Driver" ; com.mysql.jdbc.Driver
:subprotocol "postgresql" ; "mysql"
:subname (str "//" db-host ":" db-port "/" db-name)
; Any additional map entries are passed to the driver
; as driver-specific properties.
:user "mvolkmann"
:password "cljfan"})
(with-connection db ; closes connection when finished
(with-query-results rs ["select * from Employee"] ; closes result set when finished
; rs will be a non-lazy sequence of maps,
; one for each record in the result set.
; The keys in each map are the column names retrieved and
; their values are the column values for that result set row.
(doseq [row rs] (println (row :lastname))))))
```
`clj-record` 提供了一個類似 Ruby on Rails的ActiveRecord的數據庫訪問包. 更多關于它的信息看這里: [http://github.com/duelinmarkers/clj-record/tree/master](http://github.com/duelinmarkers/clj-record/tree/master) .