Scala Play Framework Anorm SQL.on禁用使用'';
每当我使用上的替换SQL查询中的占位符时,它都会用“”来包围替换,有没有办法防止这种情况发生 这意味着我不能做像这样的事情Scala Play Framework Anorm SQL.on禁用使用'';,scala,playframework,playframework-2.0,anorm,Scala,Playframework,Playframework 2.0,Anorm,每当我使用上的替换SQL查询中的占位符时,它都会用“”来包围替换,有没有办法防止这种情况发生 这意味着我不能做像这样的事情 SQL("SELECT * FROM {table} blah").on("table" -> tabletouse) 因为它将表名包装为“”,这会导致SQL语法错误 你不能做你想做的事。阿诺姆的替代品是基于准备好的报表。这意味着所有数据将自动转义,这意味着您不能将替换用于: 表名 列名 任何操作数、SQL关键字等 这里最好的方法是字符串连接(在我看来,这是一
SQL("SELECT * FROM {table} blah").on("table" -> tabletouse)
因为它将表名包装为“”,这会导致SQL语法错误 你不能做你想做的事。阿诺姆的替代品是基于准备好的报表。这意味着所有数据将自动转义,这意味着您不能将替换用于:
- 表名
- 列名
- 任何操作数、SQL关键字等
PS:签出此您当然可以将这两种方法结合起来,对不希望转义的数据使用format函数
SQL(
"""
select %s from %s
where
name = {name} and
date between {start} and {end}
order by %s
""".format(fields, table, order)
).on(
'name -> name,
'start -> startDate,
'end -> endDate
)
只需考虑使用format功能发送的数据不应来自用户输入,否则应进行适当清理它来自由用户输入确定的配置,这就是我需要的。谢谢
SQL(
"""
select %s from %s
where
name = {name} and
date between {start} and {end}
order by %s
""".format(fields, table, order)
).on(
'name -> name,
'start -> startDate,
'end -> endDate
)