いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

GroovyでSQL-0001

Groovyを使用すると通常のJavaJDBC APIを使用した場合
に比べて、処理が大分楽にかけます。特にRubyをやっている
人にとっては馴染みやすいと思います。ちょこっとした
ツール作成する際などに威力を発揮します。

(1) コネクション生成

    import groovy.sql.Sql

    sql = Sql.newInstance("JDBC URL", "ユーザID", "パスワード", "JDBCドライバー")


(2) データ取得(SELECT)
Sqlオブジェクトは既に生成済みだとします。

テストに使用するテーブルは以下のようなものとします。

    create table HOGE_TBL
      (
        name varchar2(100),
        age  int
      );
    sql.eachRow("select * from hoge_tbl"){ row |
      println row.name
      println row.age
    }

また、デフォルトで値を一つ受け取るクロージャーは
itという暗黙変数が使用できるので

    sql.eachRow("select * from hoge_tbl"){
      println it.name
      println it.age
    }

ともかけます。
上記の両方ともクロージャーの処理が終了した段階で
内部のResultSet等は自動的にクローズされます。
便利ですね。これは、GroovyでIO処理を行った場合
も同じです。そちらの方も後日書こうと思います。

PrepareStatementみたいにプレースホルダーを
使用することも出来ます。

    tableName = 'hoge_tbl'
    sql.eachRow("select * from ?", [tableName]){
      println it.name
      println it.age
    }

当然埋め込み変数も使用できます。

    tableName = 'hoge_tbl'
    sql.eachRow("select * from ${tableName}"){
      println it.name
      println it.age
    }


================================
過去の記事については、以下のページからご参照下さい。