sql接続

今日は、clojureからSQLServerに接続する機会があったので、メモとしてそのコードを残しておく。


まず、起動用のスクリプトを準備:

#! /bin/sh
#
# ファイル名: clojure
# clojure起動スクリプト
# 引数には、クラスパスに追加するファイルリストを与える
CLASSPATH=$CLOJURE_HOME/clojure.jar:$CLOJURE_LIB/clojure-contrib.jar

for cp in $@
do
  CLASSPATH=$CLASSPATH:$cp
done

java -cp $LIB clojure.lang.Repl


次に起動:

$ clojure sqljdbc.jar


残りはclojureコード:

(require 'clojure.contrib.sql)
(use 'clojure.contrib.sql)

;; DB設定
(def db {
     :classname "com.microsoft.sqlserver.jdbc.SQLServerDriver"  
     :subprotocol "sqlserver"
     :subname "//127.0.0.1;user=anonymous;databaseName=anonymous_db"})

;; 簡易テスト用の関数
(defn sql-query [query-string]
  (with-connection db
    (with-query-results res [query-string]
      (doall res))))

;;; 実行
> (sql-query "SELECT name FROM name_table")
--> ({:name "a"} {:name "b"} {:name "c"})

> (map :name (sql-query "SELECT name FROM name_table"))
--> ("a" "b" "c")