dev*_*fix 29
假设:您的计算机上已经运行了Clojure和MySQL.
结帐并构建clojure-contrib:
git clone git://github.com/richhickey/clojure-contrib.git
cd clojure-contrib
build
Run Code Online (Sandbox Code Playgroud)
将生成的clojure-contrib.jar放在CLASSPATH上.
下载MySQL Connector/J并将mysql-connector-java-5.1.7-bin.jar放在CLASSPATH上
您可能必须使用以下参数运行JVM:
-Djdbc.drivers=com.mysql.jdbc.Driver
Run Code Online (Sandbox Code Playgroud)确定MySQL数据库的连接URL
例如,如果您在MAMP下运行MySQL, 那么您在JDBC中使用的URL将类似于:
conn = DriverManager.getConnection
("jdbc:mysql://localhost:8889/db_name?user=root&password=root")
Run Code Online (Sandbox Code Playgroud)
该网址分为以下几个部分:
jdbc:mysqllocalhost8889制作这个clojure脚本,修改数据库连接参数以匹配您的URL,保存为test.clj,编译并运行.
(use 'clojure.contrib.sql) ;;' satisfy prettify
(let [db-host "localhost"
db-port 8889
db-name "db_name"]
(def db {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname (str "//" db-host ":" db-port "/" db-name)
:user "root"
:password "root"})
(with-connection db
(with-query-results rs ["select * from languages"]
(dorun (map #(println (:language :iso_code %)) rs)))))
; rs will be a sequence of maps,
; one for each record in the result set.
Run Code Online (Sandbox Code Playgroud)
注意:此代码改编自Mark Volkmann编写的类似代码,用于从Clojure访问Postgres数据库
Mat*_*ick 15
这是一个莱恩友好的答案,Nurullah Akkaya在博客上提供了很多指导:
添加依赖项到您的project.clj:
(defproject clojql "1.0.0-SNAPSHOT"
:description "FIXME: write description"
:dependencies [[org.clojure/clojure "1.2.1"]
[org.clojure/clojure-contrib "1.2.0"] ;; for clojure.contrib.sql
[org.clojure/java.jdbc "0.0.6"] ;; jdbc
[mysql/mysql-connector-java "5.1.6"]]) ;; mysql driver
Run Code Online (Sandbox Code Playgroud)从命令行运行lein deps以获取依赖项
在地图中指定您的连接信息:
user=> (use 'clojure.contrib.sql)
nil
user=> (def db {:classname "com.mysql.jdbc.Driver"
:subprotocol "mysql"
:subname "//localhost:3306/nmr"
:user "root"})
Run Code Online (Sandbox Code Playgroud)使用with-connection和with-query-results宏(及其他):
user=> (with-connection db (with-query-results rs ["select * from sometable"] (count rs)))
667
Run Code Online (Sandbox Code Playgroud)步骤3和4可以来自repl(lein repl启动它)或在普通源代码中
小智 6
截至2016年:
使用Leiningen,在project.clj中添加依赖项:
:dependencies [[org.clojure/clojure "1.8.0"]
[org.clojure/java.jdbc "0.4.2"]
[mysql/mysql-connector-java "5.1.38"]]
Run Code Online (Sandbox Code Playgroud)
要求命名空间定义内的数据库接
(ns name.space
(:require [clojure.java.jdbc :as j]))
Run Code Online (Sandbox Code Playgroud)
定义数据库连接:
(def db-map {:subprotocol "mysql"
:subname "//localhost:3306/SCHEME"
:user "DB_USER"
:password "DB_USER_PASS"})
Run Code Online (Sandbox Code Playgroud)
查询数据库:
(j/query db-map ["SELECT * FROM table"])
Run Code Online (Sandbox Code Playgroud)
在http://clojure-doc.org/articles/ecosystem/java_jdbc/using_sql.html上查找更多示例
| 归档时间: |
|
| 查看次数: |
15293 次 |
| 最近记录: |