2013-03-07 61 views
1

我正在使用Play Framework 2.1,并且当我尝试执行此MySQL代码以创建新表时收到异常。Play框架Scala Anorm参数索引超出范围

[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 

}

这个作品,如果我只是用改变的字符串“+名字+”的方法,但叶子它打开SQL注入和使用.on似乎是正确的方法来做到这一点。

回答

0

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