2016-04-26 12 views
1

Ich habe einen Code wie folgt:Anorm get Int als Ergebnis

def getUserId(email: String) = DB.withConnection { implicit con => 
    SQL("select userId from signUp where email = {email}"). 
    on('email -> email).as(SqlParser.str("access_token").singleOpt) 
} 

Es String als Ergebnis gibt.

Wie kann ich das Ergebnis als Int erhalten.

Antwort

2

Wenn Sie sich die Anorm documentation ansehen, können Sie sehen, wie Sie die Zeilenparser verwenden.

Verwenden Sie für Int entweder SqlParser.get[Int] oder den entsprechenden Alias ​​SqlParser.int.

Dort suchen Sie nach einer Zeile mit einer einzigen Spalte, .scalar ist besser.

val res: Option[Int] = 
    SQL"SELECT userId FROM signUp WHERE email = $email". 
    as(SqlParser.scalar[Int].singleOpt) 

Notiere die Anorm Interpolation SQL"..." (ohne Klammern).

0

denke ich sein sollte

def getUserId(email: String) = { 
    val userId = DB.withConnection { 
     implicit a => SQL(""" select userId from signUp where email = {email} """).on('email -> email).as(SqlParser.str("access_token").singleOpt) 
    } 
    userId.toInt 
} 

arbeiten