Я хотел узнать, как создать таблицу на лету на основе пользовательского ввода (подготовленное заявление SQL)
CREATE TABLE ? (
First_Name char(50),
Last_Name char(50)
)
Что поставить вместо вопросительного знака
Я хотел узнать, как создать таблицу на лету на основе пользовательского ввода (подготовленное заявление SQL)
CREATE TABLE ? (
First_Name char(50),
Last_Name char(50)
)
Что поставить вместо вопросительного знака
Заполнители PreparedStatement не предназначены для имен таблиц и имен столбцов, они предназначены только для фактических значений столбцов.
Таким образом, вам придется создать (подготовленную) строку оператора динамически, что означает, что ваше приложение будет уязвимо для SQL-инъекций. В зависимости от того, как предполагается использовать приложение и кем, это может стать БОЛЬШОЙ проблемой.
Как указывают другие ответы, в этом случае вы не можете использовать подготовленный оператор, поскольку замена имен таблиц не поддерживается в большинстве СУБД.
Однако я хотел бы отметить, что выбор имени таблицы на основе пользовательского ввода кажется плохой идеей. Как вы предотвращаете дублирование или недопустимые имена?
Почему имя таблицы имеет значение?