2016-08-08 4 views
0

Я хочу создать имя таблицы в SQLite на основе введенного пользователем значения текстового поля или объявленного значения строки. Например:SQLite имя таблицы из значения текстового поля

cmd.CommandText = @"CREATE TABLE '"+Machine_Name.Text+"' AS (Date, Cal_Date) VALUES (@Date, @CalDate)"; 

Я получаю новую строку в постоянной ошибке прямо перед AS. Я знаю, что это может быть плохой дизайн базы данных, но мне было бы полезно сделать это таким образом.

+0

Надеюсь, пользователь запомнит, какое имя они дали в следующий раз. – Plutonix

ответ

1

Синтаксис для создания таблицы следующая

cmd.CommandText = @"CREATE TABLE '" + newTable + "'" + 
        "(DATE DATETIME, CAL_DATE VARCHAR(256))"; 

Это, конечно, предполагает, что ваши поля являются DateTime и VarChar.
Другими словами, после того, как вы указали имя tablename, между столбцами, именем столбцов и их типом данных.

Предлагаю также обратить особое внимание на значение, которое пользователь вводит для имени новой таблицы. Эта свобода вводить что-либо может быть очень опасной, и это основной строительный блок, когда злоумышленник пытается создать Sql Injection attack.

+0

Благодарим вас за ответ и дополнительный ввод. У меня есть ограничения для всех текстовых полей. Это просто простая сетевая программа с очень небольшим количеством пользователей. Это вовсе не веб-сайт. Я буду помнить об этом, если буду развивать его дальше. Причина, по которой я делаю это, заключается в том, что обновление в sqlite немного больно. Для обновления значений используется только rowid. – LitteringAnd

2

Ваш синтаксис запроса, кажется, запутан.

Если вы хотите create table, вы должны предоставить столбец спецификации (имена и типы данных), или если вы используете create table as, действительный select запрос должен быть использован для определения имен столбцов/типов.

Последняя часть вашего заявления с предложением values является действительной формой для INSERT, но не для create table.

Подробнее см. На сайте Documentation.

+0

Спасибо. Я думал, что вы можете сделать таблицу и вставить значения. – LitteringAnd

Смежные вопросы