用于创建表的SQL Prepared语句

时间:2010-09-07 03:42:08

标签: java sql jdbc prepared-statement

我想知道一些基于用户输入动态创建表的方法(SQL Prepared Statement)

CREATE TABLE ? (
  First_Name char(50),
  Last_Name char(50)
)

我应该用什么代替问号

2 个答案:

答案 0 :(得分:12)

PreparedStatement占位符不适用于表名或列名,它们仅适用于实际列值。

因此,您必须动态创建(准备好的)语句字符串,这意味着您的应用程序易受SQL注入攻击。取决于应用程序应该如何使用 - 以及由谁 - 这可能是一个很大的问题。

相关问题

答案 1 :(得分:1)

正如其他答案所指出的那样,在这种情况下你不能使用预准备语句,因为大多数DBMS都不支持替换表名。

但是,我想指出,根据用户输入选择表名似乎是一个坏主意。你如何防止重复或无效的名称?

为什么表名很重要?