kenkovlog

けんこふたんっオフィシャユブヨグッ
アンッ!アンッ!アンッ!アンッ!

Scala でSlick からSQLite に接続してみた

Scala からSlick を使ってデータベースSQLite に接続してみました。

必要なjar のダウンロード

sbt を使っていれば次で出来ます。

name := "smt"

version := "0.1"

scalaVersion := "2.10.1"

libraryDependencies ++= Seq(
  "org.scalatest" % "scalatest_2.10" % "1.9.1" % "test",
  // use the right Slick version here:
  "com.typesafe.slick" %% "slick" % "1.0.0",
  "org.slf4j" % "slf4j-nop" % "1.7.5",
  "org.xerial" % "sqlite-jdbc" % "3.7.2"
)

もちろん、配布時にはライセンスに注意してください。

サンプルコード

簡単なコード

// Use H2Driver to connect to an H2 database
import scala.slick.driver.SQLiteDriver.simple._
// Use the implicit threadLocalSession
import Database.threadLocalSession

object Person extends Table[(Int, String, Int)]("person") {
  def id = column[Int]("ID", O.PrimaryKey)
  def name = column[String]("NAME")
  def age = column[Int]("AGE")
  def * = id ~ name ~ age
}

object Main {

  def main(args: Array[String]) {
    Database.forURL("jdbc:sqlite:mem:", driver="org.sqlite.JDBC") withSession {
      //// create a table
      try {
        Person.ddl.drop
      } catch {
        case ex: java.sql.SQLException => println("person table does not exist.")
      } finally {
        Person.ddl.create
        println("create person table")
      }
      //// insert an item
      Person.insert(1, "kenkov", 17)
      //// print
      val q = for (c <- Person) yield ConstColumn("") ++
        c.id.asColumnOf[String] ++
        c.name ++
        c.age.asColumnOf[String]
      q foreach println
    }
  }
}
けんこふたん