Sla*_*vko 11 java sql jdbc prepared-statement
我正在尝试使用类似于此的代码的PreparedStatement:
SELECT * FROM ? WHERE name = ?
显然,当我使用setString()设置表和名称字段时会发生什么:
SELECT * FROM 'my_table' WHERE name = 'whatever'
并且查询不起作用.有没有办法设置没有引号的字符串,所以行看起来像这样:
SELECT * FROM my_table WHERE name = 'whatever'
或者我应该放弃它并使用常规语句(参数来自系统的另一部分,这些都不是由用户输入的)?
mdm*_*dma 17
参数不能用于参数化表,也不能参数化任何数据库对象.它们主要用于参数化WHERE/HAVING子句.
要做你想做的事,你需要自己做替换并根据需要创建一个常规语句.
当您使用预准备语句时,这是数据库对语句进行前期处理的提示 - 例如,解析字符串并可能确定执行计划.如果查询中使用的对象可以动态更改,那么数据库无法进行前期准备工作.