CREATE TABLE с параметрами и MySqlData - PullRequest
0 голосов
/ 24 февраля 2019

Я делаю модуль опроса для моего программного обеспечения, в котором вы можете выбрать методы ввода в качестве HTML-элементов, которые будут отображаться в опросе.

Затем My Software берет эти элементы ввода и должен создать таблицу длякаждый опрос и name -атрибут должны представлять собой имя столбца.

Я хочу использовать параметры, так как name -атрибуты могли быть отредактированы на внешнем интерфейсе страницы создания опроса.Поэтому запрос "DELETE" или "DROP" не должен быть возможным.

Мое текущее состояние кода для создания:

StringBuilder stringBuilder = new StringBuilder();
                stringBuilder.AppendLine(string.Format("CREATE TABLE {0}.{1} (", "surveys", string.Format("survey_{0}", SurveyObject.SurveyHash)));
                stringBuilder.AppendLine("id bigint(1) NOT NULL AUTO_INCREMENT,");

                for (int i = 0; i < namesAttributes.Count(); i++)
                {
                    string columnKey = string.Format("@Column{0}", i);
                    sqlParams.Add(columnKey, namesAttributes[i]);
                    stringBuilder.AppendLine(string.Format("{0} varchar(128) DEFAULT NULL,", columnKey));
                }

                stringBuilder.AppendLine("PRIMARY KEY(id),");
                stringBuilder.AppendLine("UNIQUE KEY `id_UNIQUE` (`id`)");
                stringBuilder.AppendLine(") ENGINE = InnoDB DEFAULT CHARSET = utf8;");
                string sqlQuery = stringBuilder.ToString().Replace("'", "`");
                isCitySurveySaved = sqlClass.Execute(sqlQuery, sqlParams) > 0;

Но я получаю следующую ошибку:

MySql.Data.MySqlClient.MySqlException: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''TEXTAREA7jciyv3nokqj77b7ysc8qh' varchar(128) DEFAULT NULL, PRIMARY KEY(id), U' at line 3"

Что говорит о том, что ему не нравится ' в запросе, но они автоматически создаются MySqlData.

Кто-то знает, как изменить разделитель или вообщерешить эту проблему?

...