Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment me connecter à une base de données MySQL depuis Clojure ?

Hypothèse :vous avez déjà Clojure et MySQL en cours d'exécution sur votre machine.

  1. commander et créer clojure-contrib :

    git clone git://github.com/richhickey/clojure-contrib.git
    cd clojure-contrib
    build
    

    Mettez le résultat clojure-contrib.jar sur votre CLASSPATH .

  2. Télécharger Connecteur MySQL/J et mettez le mysql-connector-java-5.1.7-bin.jar sur votre CLASSPATH

    Vous devrez peut-être exécuter votre JVM avec ces arguments :

    -Djdbc.drivers=com.mysql.jdbc.Driver
    
  3. Déterminez l'URL de connexion de votre base de données MySQL

    Par exemple, si vous exécutez MySQL sous MAMP alors l'URL que vous utiliseriez dans JDBC ressemblera à :

    conn = DriverManager.getConnection
            ("jdbc:mysql://localhost:8889/db_name?user=root&password=root")
    

    L'URL est décomposée en ces composants :

    • protocole :jdbc:
    • sous-protocole :mysql
    • db-host :localhost
    • port db :8889
    • nom d'utilisateur
    • mot de passe
  4. Créez ce script clojure, modifiez les paramètres de connexion à la base de données pour qu'ils correspondent à votre URL, enregistrez sous test.clj, compilez et exécutez.

    (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.

NB Ce code a été adapté d'un code similaire écrit par Mark Volkmann pour accéder à un Base de données Postgres de Clojure