S-JIS[2011-03-05/2013-06-09] 変更履歴

Scala JDBC実験

ScalaJDBCを使ってDBにアクセスしてみる。


概要

ScalaにはdbcというDBアクセス用のクラス群があるけれども、未完成でもあることだし、普通のJDBCを使ってDBアクセスしてみる。
本格的に使うというよりは、テストデータを軽く作りたいといった目的。
Javaだとコンパイルしないと実行できないが、ScalaだとREPL上から実行できるので楽。

JDBCを扱うには、ただ単にjava.sql・javax.sqlのクラスを使うだけ。

import java.sql.{ Array => _, _ }
import javax.sql._

※「java.sql._」で全クラスをインポートしてしまうと、「Array」が配列と競合して使えなくなる。java.sql.Arrayなんかたぶん使わないので、インポート時に除外しておく。

実行時にはJDBCのライブラリー(jarファイル)が必要。
scalaを起動(scalaコマンドを実行)する際にクラスパスを指定する。(REPLからでも使用できる)

例> scala -cp C:\oracle\jdbc\lib\ojdbc6.jar

Connection

Oracleにつなぐ例。

val user = "scott"
val pass = "tiger"
val conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ora92", user, pass)
conn.setAutoCommit(false)
〜
conn.close

※JRE1.6とそれに対応するJDBCドライバーで動いていれば、Class.forName()は不要。


Statement

SQLを実行するにはStatement(PreparedStatement)を使用する。

val conn = DriverManager.getConnection(〜)
try {
  conn.setAutoCommit(false)
  val st = conn.createStatement
  try {

    st.execute(sql)
  } finally {
    st.close
  }
  val st = conn.prepareStatement(sql)
  try {
    st.set〜 //バインド変数を設定
    st.executeUpdate
  } finally {
    st.close
  }
  conn.commit
} catch {
  case e =>
    try conn.rollback catch{ case e => e.printStackTrace }
    throw e
} finally {
  try conn.close catch{ case e => e.printStackTrace }
}

insertの例
selectの例


Scala実験へ戻る / Scala目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま