project.clj:
---------------------------------------------------------------------------------------------------------------------------------------
(defproject testsqlite "1.0.0-SNAPSHOT"
  :description "FIXME: write description"
  :disable-deps-clean false
  :dependencies [[org.clojure/clojure "1.3.0"]
                 [org.clojure/clojure-contrib "1.2.0"]
                 [org.clojure/java.jdbc "0.1.0"]
                 [org.xerial/sqlite-jdbc "3.7.2"]]
  :main testsqlite.core)

core.clj:
---------------------------------------------------------------------------------------------------------------------------------------
(ns testsqlite.core
  (:import [java.io File])
  (:require [clojure.java.jdbc :as sql])
  (:gen-class))

(def db-name "test.db")

(def db {
         :classname "org.sqlite.JDBC"
         :subprotocol "sqlite"    ; Protocol to use
         :subname db-name    ; Location of the db
         })

(def new-db-conn (merge db {:create true}))

(defn create-tables
 "Creates the tables needed."
 []
 (sql/create-table
  :members
  [:id :integer "PRIMARY KEY"]
  [:name "varchar(32)"]
  [:age :integer]
  [:programmer "tinyint"]))


(defn insert-record
  [name age programmer?]
  (sql/insert-values
   :members
   [:name
    :age
    :programmer]
   [name
    age
    programmer?]))


(defn get-records
  [record-fn]
  (sql/with-query-results
    rs
    ["select * from members"]
    (doseq [r rs]
      (record-fn r))))

(defn delete-record
  [id]
  (sql/delete-rows :members ["id = ?" id]))

(defn -main
  [& args]
  (when (not (.exists (File. db-name)))
    (sql/with-connection new-db-conn
      (create-tables)))
  (cond (= (nth args 0) "insert")
        (sql/with-connection db
          (insert-record (nth args 1)
                         (Integer/parseInt (nth args 2))
                         (Integer/parseInt (nth args 3))))
        (= (nth args 0) "dump")
        (sql/with-connection db
          (get-records println))
        (= (nth args 0) "delete")
        (sql/with-connection db
          (delete-record (Integer/parseInt (nth args 1))))
        )
  )


-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to