2014-10-16 47 views
0

,我發現這個答案,解決一個領域 - >Inserting multiple values into table with anorm插入多個值和字段到表ANORM

var fields: List[String] = Nil 
var values: List[(String,ParameterValue[_])] = Nil 

for ((username,i) <- usernames.zipWithIndex) { 
    fields ::= "({username%s})".format(i) 
    values ::= ("username" + i, username) 
} 

SQL("INSERT INTO users (username) VALUES %s".format(fields.mkString(","))) 
    .on(values: _*) 
    .executeUpdate() 

我怎麼能傳遞更多的領域,如用戶名,地址,PHONENUMBER等?

我想...

def create(names: List[(String,ParameterValue[_])] ,addresses :List[(String,ParameterValue[_])]){ 

    var fields: List[String] = Nil; 

    for((a,i) <- names.zipWithIndex){ 
     fields ::= "({name%s},{address%s})".format(i) 
    } 
      DB.withConnection { implicit c => 

      SQL("insert into table (name,address) values %s".format(fields.mkString(","))) 
      .on(names: _*, addresses: _*) 
      .executeUpdate() 
      } 
} 

我得到以下錯誤: 「不‘_ *’批註這裏不允許」

如果我可以用一個單一的列表將所有的參數,它會甚至更好。

回答

0

你基本上想要執行批量插入。這裏有一個從文檔中取得的改編:

import anorm.BatchSql 

val batch = BatchSql(
    "INSERT INTO table (name, address) VALUES({username}, {address})", 
    Seq(names, addresses) 
) 

val res: Array[Int] = batch.execute() // array of update count 
+0

您的代碼中的名稱和地址是我的作爲參數收到的列表? 是否可以使用單個列表,以這種方式回答? – luckasx 2014-10-16 19:57:30

+0

我收到以下錯誤:「NoSuchElementException:找不到密鑰:地址」 – luckasx 2014-10-18 03:23:27

相關問題