1

Play Framework 2.1 を使用していますが、この MySQL コードを実行して新しいテーブルを作成しようとすると例外が発生します。

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

これを呼び出すために実行されるコードは、次の定義です。

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 を使用するのが適切な方法のようです。

4

1 に答える 1