我正在创建一个程序,将一堆数据库注释从输入文件上传到表和列。
我开始使用prepared-statements但很快意识到这对DDL语句不起作用。
我实际上是在为每个表名及其描述的表注释更改sql语句:
"comment on table " + name.trim() + " is " + "'" + description.trim() + "'";
列评论相同。
没有其他方法可以使用准备好的声明吗? 另外,这是否容易受到sql注入?
答案 0 :(得分:2)
这不是JDBC问题,而是数据库问题。数据库不允许您准备DDL,因为重用的可能性不大。大多数情况下,您希望准备语句的原因是是否存在重用潜力。 DDL主要用于一次性使用,用于为应用程序设置架构。 (注意我使用"大部分时间"以及"大多数"表示最常见的用例。)
此外,通常,如果使用字符串连接构造SQL或DDL语句,则不仅要打开SQL注入,还要解决其他问题,如语法错误,字符转义等。因此,更好的做法是将DDL置于主应用程序逻辑之外。你的情况可以吗?