【问题标题】:Play Framework Scala Anorm Parameter index out of rangePlay Framework Scala Anorm 参数索引超出范围
【发布时间】:2013-03-07 22:25:16
【问题描述】:

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

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

调用 this 的代码是这个 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 似乎是执行此操作的正确方法。

【问题讨论】:

    标签: sql scala playframework anorm


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2014-06-06
      • 1970-01-01
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多