ScalaでDB操作
Scala勉強会#3の資料(PDFリンク)をみながら試してみました。JavaでJDBC使うのとまったく同じ。簡単すぎてビビる。
MySQLのテーブル
mysql> select * from bs_tb; +------+------+------+ | bang | uria | tuki | +------+------+------+ | A103 | 101 | 4 | | A102 | 54 | 5 | | A104 | 181 | 4 | | A101 | 184 | 4 | | A103 | 17 | 5 | | A101 | 300 | 5 | | A102 | 205 | 6 | | A104 | 93 | 5 | | A103 | 12 | 6 | | A107 | 87 | 6 | | A109 | 333 | NULL | +------+------+------+ 11 rows in set (0.07 sec) mysql> desc bs_tb; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | bang | varchar(10) | YES | | NULL | | | uria | int(11) | YES | | NULL | | | tuki | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set (0.00 sec)
これは基礎からのMySQL [基礎からのシリーズ] (プログラマの種シリーズ)に書いてあった練習用テーブルです。
サンプルコード
import java.sql.DriverManager object DB { def main(args: Array[String]) = { selectLikeJava() } def selectLikeJava() = { Class.forName("com.mysql.jdbc.Driver") val db = DriverManager.getConnection( "jdbc:mysql://{ホスト名}/{データベース名}", "{アカウント}", "{パスワード}") val st = db.createStatement val sql = "SELECT * FROM bs_tb" val res = st.executeQuery(sql) while (res.next) { val bang = res.getString(1) val uria = res.getInt(2) val tuki = res.getInt(3) printf("%4s %4d %4d\n", bang, uria, tuki) } } }
{ホスト名}{データベース名}{アカウント}{パスワード}の部分は自分の環境に応じて書き換えてください。
sbtでの実行結果
テーブルの内容をSELECT文で全部表示しただけです。
[info] Running DB
A103 101 4
A102 54 5
A104 181 4
A101 184 4
A103 17 5
A101 300 5
A102 205 6
A104 93 5
A103 12 6
A107 87 6
A109 333 0
[info] == run ==
[success] Successful.
実行するには、JDBCが必要となります。MySQLのサイト(リンク)からダウンロードしてクラスパスに通せばいいんですけど、自分はsbt使ってるので、以下のようにビルド環境を扱ってくれるクラスに書いて、updateすれば自動ダウンロードと自動設定してくれるようになってます。
project/build/MyProject.scala
import sbt._ class MyProject(info: ProjectInfo) extends DefaultProject(info) { val mysql = "mysql" % "mysql-connector-java" % "5.1.13" }