使用异常将多个值插入表中

use*_*788 4 scala anorm playframework-2.0

我想从 Anorm 中的 SQL 查询向表中插入多个值。在下面的代码段中,有没有办法将用户名列表绑定为值,而不仅仅是一个用户名?

SQL("insert into users (username) " +
      "values ({username})").on(
      'username -> username,
    ).executeUpdate()
Run Code Online (Sandbox Code Playgroud)

作为替代方案,我可以从我的输入创建一个连接的字符串,但这很容易发生 SQL 注入并且不太干净。

tok*_*rev 5

使用 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()
Run Code Online (Sandbox Code Playgroud)