создать таблицу в конкретной схеме с помощью C # в MySQL - PullRequest
0 голосов
/ 14 мая 2018

Я пытаюсь создать базу данных и таблицу в MySQL, используя C #. Пока что я могу создать схему в mysql через c #, но у меня возникли проблемы с созданием таблицы в этой созданной схеме.

Пользователь введет имя создаваемой схемы, а затем введет имя таблицы, которая будет создана под именем схемы, введенным ранее. Имя схемы и имена таблиц берутся в значениях текстового поля.

Я получаю сообщение об ошибке в запросе таблицы, ошибка о синтаксисе.

myQuery1.AppendFormat("CREATE SCHEMA {0}", databasenametxt.Text);
myQuery2.AppendFormat("CREATE TABLE {0} (name VARCHAR(20)) WHERE 
database={0}",tblenametxt.Text,databasenametxt.Text);
string s1 = myQuery1.ToString();
string s2 = myQuery2.ToString();
MySqlCommand cmd = new MySqlCommand(s1, coat);
MySqlCommand cmd1 = new MySqlCommand(s2, coat);
cmd.ExecuteNonQuery();
cmd1.ExecuteNonQuery();

myQuery1 успешно выполнен, и создана схема с именем, введенным в databasenametxt.Text, но в myquery2 я получаю ошибку.

Ответы [ 2 ]

0 голосов
/ 14 мая 2018

Как указано в комментарии, ошибка "У вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MySQL, рядом с" WHERE database = databasename "в строке 1" *

потому что "где база данных = .." не является допустимым синтаксисом.

Поскольку схема - это просто синоним базы данных в MySQL, которую вы хотите

create database {0}
use {0}
create table {0} (`name` VARCHAR(20))

в каждой из ваших строк. Почему смена имени? это зарезервированное слово.

0 голосов
/ 14 мая 2018

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

CREATE TABLE schema_name.table_name ( column_name1 data_type, column_name2 data_type, column_name3 data_type, .... )

Для замены schema_name и table_name она должна работать следующим образом:

myQuery2.AppendFormat("CREATE TABLE {schema_name}.{table_name} ( {column_name1} {data_type}, .... ), your_schema_name, your_table_name, column_name1, data_type1);

Вы также можете просто добавить строки:

myQuery2.AppendFormat("CREATE TABLE " + your_schema_name + "." + your_table_name + " ( " + column_name1 + " " + data_type1 + ")");

Это просто, что вы создаете строку запроса, которая будет работать на сервере SQL.

Кроме того, вы можете получить все msqlсинтаксис для создания таблицы на https://dev.mysql.com/doc/refman/8.0/en/create-table.html

Дайте мне знать, если это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...