我正在try 使用Java和Oracle数据库截断一个表.我的目标是在避免SQL注入漏洞的同时实现这一点.以下是我try 过的代码:
String tableName = "employee";
String truncateQuery = "TRUNCATE TABLE ?";
try (PreparedStatement statement = connection.prepareStatement(truncateQuery)) {
statement.setString(1, tableName);
statement.executeUpdate();
}
然而,当我执行这段代码时,我遇到了一个"无效的表名"错误.我知道将表名直接连接到查询字符串("truncate table"+ableName)可能会导致命令注入漏洞.
我还确认了表名是有效的,因为在数据库中直接执行"truncate table Employee"可以很好地工作.
我的问题是:在这种情况下,有没有一种方法可以有效地使用查询参数来避免SQL注入,同时在Oracle数据库中使用Java中的预准备语句截断表?
我感谢任何关于如何安全地实现这一点的指导或建议.