我正在使用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似乎是正确的方法。
答案 0 :(得分:0)
所以看起来它是PreparedStatement不能使用表名作为参数,所以看起来我必须手动更改字符串。如果有人在避免SQL注入的同时对如何做到这一点有任何见解,那就太棒了。