sclick orm for scala如何检索数据库列值

时间:2016-02-08 07:27:11

标签: scala playframework slick slick-3.0

我是使用版本3.1.1的Slick ORM的新手,在普通sql的示例中,我没有看到如何检索数据库列http://slick.typesafe.com/doc/3.1.1/sql.html的值。这是我的简单例子

 def listfollowing() = Action.async {


   val selectq=sql"""SELECT model,id from carsDB where id=17""".as[(String,Int)]
   // I would like to get the value of model back and put it in a Var
   // var model= model
    database.run(selectq).map {finished=> 

   // I would like to get the value of model back and put it in a Var
   // var model= model
           Ok(finished.toString())

    }
  }

如何找回列模型的值,以便将其放入var或val

1 个答案:

答案 0 :(得分:1)

当你这样做时:database.run(selectq).map {finished=> ... } finishedVector[(String,Int)]。如果您确定它只返回一行(因为"... where id=17"),那么您可以使用headOption()并检查其中是否有值(如果没有id的记录则为none 17),如果有 - >返回它否则返回一些错误。代码将是这样的:

def listfollowing() = Action.async {
    val selectq = sql"""SELECT model,id from carsDB where id=17""".as[(String, Int)]
    db.run(selectq).map { finished => 
        finished.headOption match {
            case s: (String, Int) => Ok(s._1)
            case None => Ok("No car found for requested id")
        }
    }
}