Archive for 10月 13th, 2012

  1. Hello, JDBC Type1(Clojure) World!

    Posted on 10月 13th, 2012 by cx20

    JDBC Type1

    JDBC(Java Database Connectivity)は、Java 用のデータベース接続 API である。実装方法によりType1~4の4つのタイプが存在する。
    Type1 は JDBC と ODBC の API をマップさせたブリッジドライバである。
    以下は Clojure による JDBC ライブラリの使用例となっている。

    ソースコード(Clojure + JDBC Type1 + ODBC + Jet データベース)

    (import '(java.sql DriverManager))
     
    (class sun.jdbc.odbc.JdbcOdbcDriver)
    (def conn (. DriverManager (getConnection "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=.\hello.mdb")))
    (def stmt (.createStatement conn))
    (def rs (.executeQuery stmt "SELECT 'Hello, JDBC Type1 World' AS Message"))
    (if (.next rs)
        (do
            (println (.getString rs 1))
        )
    )
     
    (.close rs)
    (.close stmt)
    (.close conn)

    ソースコード(Clojure + JDBC Type1 + ODBC + ACE データベース)

    (import '(java.sql DriverManager))
     
    (class sun.jdbc.odbc.JdbcOdbcDriver)
    (def conn (. DriverManager (getConnection "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\hello.accdb")))
    (def stmt (.createStatement conn))
    (def rs (.executeQuery stmt "SELECT 'Hello, JDBC Type1 World' AS Message"))
    (if (.next rs)
        (do
            (println (.getString rs 1))
        )
    )
     
    (.close rs)
    (.close stmt)
    (.close conn)

    ソースコード(Clojure + JDBC Type1 + ODBC + SQL Server)

    (import '(java.sql DriverManager))
     
    (class sun.jdbc.odbc.JdbcOdbcDriver)
    (def conn (. DriverManager (getConnection "jdbc:odbc:Driver={SQL Server};SERVER=(local)" "sa" "P@ssW0rd")))
    (def stmt (.createStatement conn))
    (def rs (.executeQuery stmt "SELECT 'Hello, JDBC Type1 World' AS Message"))
    (if (.next rs)
        (do
            (println (.getString rs 1))
        )
    )
     
    (.close rs)
    (.close stmt)
    (.close conn)

    ソースコード(Clojure + JDBC Type1 + ODBC + Oracle)

    (import '(java.sql DriverManager))
     
    (class sun.jdbc.odbc.JdbcOdbcDriver)
    (def conn (. DriverManager (getConnection "jdbc:odbc:Driver={Oracle in OraDb11g_home1};DBQ=ORCL" "scott" "tiger")))
    (def stmt (.createStatement conn))
    (def rs (.executeQuery stmt "SELECT 'Hello, JDBC Type1 World' AS Message FROM DUAL"))
    (if (.next rs)
        (do
            (println (.getString rs 1))
        )
    )
     
    (.close rs)
    (.close stmt)
    (.close conn)

    ソースコード(Clojure + JDBC Type1 + ODBC + MySQL)

    (import '(java.sql DriverManager))
     
    (class sun.jdbc.odbc.JdbcOdbcDriver)
    (def conn (. DriverManager (getConnection "jdbc:odbc:Driver={MySQL ODBC 5.1 Driver};Server=localhost" "root" "P@ssW0rd")))
    (def stmt (.createStatement conn))
    (def rs (.executeQuery stmt "SELECT 'Hello, JDBC Type1 World' AS Message"))
    (if (.next rs)
        (do
            (println (.getString rs 1))
        )
    )
     
    (.close rs)
    (.close stmt)
    (.close conn)

    実行方法

    C:¥> clj Hello.clj

    実行結果

    Hello, JDBC Type1 World!