2017-06-14 7 views
0

私は、コード内にいくつかの既存のjdbcコードを置き換えることを試みています。非常にシンプルなSlickクエリー、単一の値を得る

まず最初に、本当に簡単なクエリを実行するために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

ありがとうございます、私は確かに私のスケーラワークシートは決して 'println'に到達しません。さまざまなGoogleの検索結果から、この時点でのコードよりもintelliJには問題があると思います – James

関連する問題