假设:您的机器上已经运行了Clojure和MySQL。
你怎么让他们开口说话?
发布于 2009-03-05 08:07:39
假设:您的机器上已经运行了Clojure和MySQL。
git clone git://github.com/richhickey/clojure-contrib.git cd clojure-contrib build
将生成的clojure-contrib.jar放在CLASSPATH.
您可能需要使用以下参数运行JVM:
-Djdbc.drivers=com.mysql.jdbc.Driver
例如,如果您在MAMP下运行MySQL,那么在JDBC中使用的URL将如下所示:
conn = DriverManager.getConnection ("jdbc:mysql://localhost:8889/db_name?user=root&password=root")
分为以下几个部分: url
- protocol: `jdbc:`
- subprotocol: `mysql`
- db-host: `localhost`
- db-port: `8889`
- username
- password
(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.注:此代码改编自Mark Volkmann为access a Postgres database from Clojure编写的类似代码
发布于 2012-04-19 04:19:17
这是一个对lein友好的答案,有很多来自this blog by Nurullah Akkaya的指导
project.clj:(defproject clojql "1.0.0-SNAPSHOT“: description”FIXME: write description“:依赖[org.clojure/clojure "1.2.1”;对于连接器org.clojure/java.jdbc "0.0.6“;;jdbc mysql/mysql- clojure.contrib.sql -java "5.1.6"]) ;;mysql driver
lein deps获取映射中的连接信息:user=> (use 'clojure.contrib.sql) nil user=> (def db {:classname "com.mysql.jdbc.Driver“:subprotocol "mysql”:subname "//localhost:3306/nmr“:user”clojure.contrib.sql“})
with-connection和with-query-results宏(& others):查询(带有连接的数据库(带有查询结果的rs "select * from sometable")) 667
步骤3和4可以来自repl (使用__lein repl启动它),也可以在正常的源代码中执行
发布于 2016-02-10 21:55:17
截至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"]]需要在命名空间定义中使用数据库连接器:
(ns name.space
(:require [clojure.java.jdbc :as j]))定义数据库连接:
(def db-map {:subprotocol "mysql"
:subname "//localhost:3306/SCHEME"
:user "DB_USER"
:password "DB_USER_PASS"})查询数据库:
(j/query db-map ["SELECT * FROM table"])在http://clojure-doc.org/articles/ecosystem/java_jdbc/using_sql.html上找到更多示例
https://stackoverflow.com/questions/613929
复制相似问题