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