Monday, September 10, 2018

Clojure + Java Interop + JDBC

user=> (import '(java.sql Connection DriverManager Statement SQLException ResultSet
    ResultSetMetaData)) java.sql.ResultSetMetaData user=> (Class/forName "org.hsqldb.jdbc.JDBCDriver") org.hsqldb.jdbc.JDBCDriver user=> (def conn (DriverManager/getConnection
    "jdbc:hsqldb:hsql://localhost/clojuredb", "SA", "")) #'user/conn user=> (def stmt (.createStatement conn)) #'user/stmt user=> (def rs (.executeQuery stmt "SELECT * FROM Authors")) #'user/rs user=> (.next rs) true user=> (.getInt rs 1) 0 user=> (.getString rs 2) "Kurt" user=> (.getString rs 3) "Vonnegutt" user=>

Clojure Sorted Map

user=> (def stooges (sorted-map :a 'larry :b 'mo :c 'curly))
#'user/stooges
user=> (stooges :a)                                         
larry

Clojure with java.io.File

user=> (new File "temp.clj")
java.lang.IllegalArgumentException: Unable to resolve classname: File (NO_SOURCE_FILE:61)
user=> (import 'java.io.File)
java.io.File
user=> (new File "temp.clj") 
#

Start Clojure

cd dev/lib/clojure-1.1.0
java -cp .:clojure.jar:jline-0.9.94.jar jline.ConsoleRunner clojure.main

Start Clojure with HSQL jar

$ java -cp .:clojure.jar:jline-0.9.94.jar:../hsqldb/lib/hsqldb.jar
    jline.ConsoleRunner clojure.main