S-JIS[2011-03-05/2013-06-09] 変更履歴
|
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
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()は不要。
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 } } |