Play Framework Scala Anorm参数索引超出范围

时间:2013-03-07 22:25:16

标签: sql scala playframework anorm

我正在使用Play Framework 2.1,当我尝试执行此MySQL代码来创建新表时,我遇到异常。

[SQLException: Parameter index out of range (1 > number of parameters, which is 0).]

执行调用此代码的代码是def:

def create(name: String):Boolean = {
if(!contains(name)) // a function that tests if the table already exists
{
  val query = SQL("""
      CREATE TABLE `database`.`{name}` (
      `id` INT NOT NULL ,
      `address` TEXT NULL ,
      `city` TEXT NULL ,
      `state` TEXT NULL ,
      `zip` INT NULL ,
      `ownerid` INT NULL ,
      `price` DOUBLE NULL ,
      `rooms` INT NULL ,
      `available` BIT NULL ,
      `type` TEXT NULL ,
      PRIMARY KEY (`id`) );
  """).on('name -> name).execute()(conn) //Play compilation error is highlighting this line
  true
}
else    false

}

如果我只使用“+ name +”方法更改字符串,但是这样就可以使SQL注入并使用.on似乎是正确的方法。

1 个答案:

答案 0 :(得分:0)

所以看起来它是PreparedStatement不能使用表名作为参数,所以看起来我必须手动更改字符串。如果有人在避免SQL注入的同时对如何做到这一点有任何见解,那就太棒了。