2017-06-14 64 views
0

我試圖在我的代碼中引入浮油來代替一些現有的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值?

回答

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) 
+0

謝謝,我肯定會繼續,但我的scala工作表永遠不會到'println'。從各種谷歌搜索中,我認爲它比智能代碼在這一點上更具有問題 – James