如何创建准备好的语句并添加不带“ ”的字符串?我已经创建了此类的PreparedStatement:
var query = "Select ? From mytable where rootId = ?";
var statement = connection.prepareStatement(query);
statement.setObject(1, result);
statement.setObject(2, rootId);
return statement;
但是我得到了这样的声明:
Select 'someField' From mytable where rootId = 'wdcfr';
这样的 ' ' 破坏了我的要求,我想创建一个没有 ' ' 的声明。 someField 值取决于用户输入。 我怎样才能做到?
准备好的语句旨在处理参数值,而不是列或表名称。占位符(“?”)旨在用于数据库驱动程序将正确转义和引用的值,以防止 SQL 注入。
如果需要根据用户输入动态更改 SQL 查询中的列名或表名,则必须手动构造 SQL 字符串。例如:
String result = "column_name"; // column name that you want to be displayed
String query = "SELECT " + someField + " FROM mytable WHERE rootId = ?";
PreparedStatement statement = connection.prepareStatement(query);
statement.setObject(1, rootId);
return statement;
让我知道这是否有帮助。