我试图在我的代码中引入光滑以替换现有的jdbc
代码。
首先,我想使用scala工作表来运行一个非常简单的查询,我想传入一个整数id,然后返回一个字符串uuid。这是整个代码库中最简单的方法。
据我所知,我需要建立一个与数据库的连接,设置一个动作,然后运行该动作。我有以下代码:
val db = Database.forURL("jdbc:mysql://mysql-dev.${URL}/${DB}?autoReconnect=true&characterEncoding=UTF-8",
driver = "com.mysql.jdbc.Driver", user = "${user}",password= "${pass}")
val getUUID = sql"""SELECT ${UUIDFIELD} from users u WHERE u.${IDFIELD} = ${Id}""".as[String]
val uuid:String = db.run(getUUID)
println(uuid)
我很确定我没有在Database.forURL
调用中正确设置驱动程序,但工作表也抱怨db.run
的结果不是字符串。如何获取字符串UUID值?
答案 0 :(得分:2)
db.run
方法返回Future[_]
类型。您应该使用Await
来获取结果。
val db = Database.forURL("jdbc:mysql://mysql-dev.${URL}/${DB}?autoReconnect=true&characterEncoding=UTF-8",
driver = "com.mysql.jdbc.Driver", user = "${user}",password= "${pass}")
val getUUID = sql"""SELECT ${UUIDFIELD} from users u WHERE u.${IDFIELD} = ${Id}""".as[String]
val uuidFuture:Future[String] = db.run(getUUID)
import scala.concurrent._
import scala.concurrent.duration._
val uuid:String = Await.result(uuidFuture, Duration.Inf)
println(uuid)