Ошибка MySql У вас есть ошибка в вашем синтаксисе SQL.при добавлении параметра с переменной - PullRequest
1 голос
/ 08 мая 2019

Синтаксическая ошибка при добавлении параметра с textBox1.Text. Я хочу добавить столбец в базу данных.Как мне сделать это правильно.Напишите правильный код, пожалуйста

private async void button1_Click(object sender, EventArgs e)
{      
    MySqlCommand command = new MySqlCommand("ALTER TABLE Students ADD COLUMN ? TEXT", sqlConnection);

    command.Parameters.AddWithValue("?", textBox1.Text); 

    try
    {
        await command.ExecuteNonQueryAsync();
        Close();

    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message, "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error);
    }

}

Снимок экрана https://i.paste.pics/77ce28a6fd93598b0939bc43a1d15b9a.png

Снимок экрана 2 результата ответа https://i.paste.pics/a9e8c0739bcbaf6cf7a23ca62a9c9812.png

1 Ответ

1 голос
/ 08 мая 2019

Параметры не могут использоваться для изменения имен столбцов или таблиц. Вы должны построить свой запрос вручную. Но не забудьте избежать пользовательского ввода, чтобы избежать SQL-инъекций:

string escapedStringColumnName = MySql.Data.MySqlClient.MySqlHelper.EscapeString(textBox1.Text);

// Do some more validations, what text you got before building you column..
if (!new Regex("[a-zA-z ]+").IsMatch(escapedStringColumnName))
    throw new Exception();

MySqlCommand command = new MySqlCommand("ALTER TABLE Students ADD COLUMN `" + escapedStringColumnName + "` TEXT", sqlConnection);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...