Archive for 4月 16th, 2013

  1. Hello, JDBC Type1(Oxygene) World!

    Posted on 4月 16th, 2013 by cx20

    JDBC Type1

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

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

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=.\\hello.mdb", "", "");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

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

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=.\\hello.accdb", "", "");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

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

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={SQL Server};SERVER=(local)", "sa", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

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

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={Oracle in OraDb11g_home1};DBQ=ORCL", "scott", "tiger");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message FROM DUAL");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

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

    namespace hello;
     
    interface
    uses
        java.sql.*,
        sun.jdbc.odbc.*;
     
    type
        Hello = class
    public
        class method Main(args: array of String);
    end;
     
    implementation
     
    class method Hello.Main(args: array of String);
    var
        conn: Connection;
        stmt: Statement;
        rs: ResultSet;
    begin
        java.lang.Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     
        conn := DriverManager.getConnection("jdbc:odbc:Driver={MySQL ODBC 5.1 Driver};Server=localhost", "root", "P@ssW0rd");
        stmt := conn.createStatement();
        rs := stmt.executeQuery("SELECT 'Hello, JDBC Type1 World!' AS Message");
        while rs.next() do begin
            System.out.println( rs.getString(1) );
        end;
        rs.close();
        stmt.Close();
        conn.Close();
    end;
     
    end.

    実行方法

    C:¥> oxygene Hello.pas -mode:Java
    C:¥> java -jar hello.jar

    実行結果

    Hello, JDBC Type1 World!