2017/01/20

PlayScalaでMySQLデータベースアクセス

PlayScalaでMySQLデータベースに接続する所を書いていきます。
データベースにアクセスするには、設定ファイル build.sbtと conf/application.conf に追加をします。
プログラムの中では、コネクションを取得して、ステートメントを生成して、クエリを実行します。

(1)build.sbtにJDBCを追加します
DBプラグインを依存ライブラリに、jdbcを追加します
libraryDependencies ++= Seq(
 jdbc
 , anome
 , cache
)

(2)conf/application.conf に接続情報を追加します
db.default.driver=com.mysql.jdbc.Driver            // SQL接続ドライバー
db.default.url="jdbc:mysql://localhost/"DB名"?zeroDateTimeBehavior=convertToNull&reconnect=true&characterEncoding=utf8"  // DB接続URL
db.default.user="DBユーザー名"
db.default.password="DBパスワード"

(3)プログラム内でのインポート
import play.api.db._

(4)プログラム内での処理
プログラム内では、コネクションの取得、ステートメントの生成、SELECTするクエリを実行、
そして、取得したデータを1つずつ見ていく処理をします。
最後に、ステートメントとコネクションをクローズします。

var conn = DB.getConnection()                                 // JDBCコネクションの取得
var sSQL = "SELECT * FROM m_customer"          // SELECTするSQL文
try {
    val stmt = conn.createStatemtnt()          // ステートメントの生成
    var rs = stmt.executeQuery(sSQL)          // クエリのの実行して、レコードセットにセット

    // レコードセットをwhileループで回します
    while(rs.next()) {
        var lId   = rs.getLong("ID")
        var sNo   = rs.getString("NO")
        var sName = rs.getString("名前")
        // 受け取ったデータの処理を書きます
        printf("ID:%d, NO:%s, 名前:%s \r\n", lId, sNo, sName)
    }
    stmt.close()             // ステートメントをクローズします
} finnlay {
    conn.close()            // コネクションをクローズします
}