Параметры в MySQL запросе не заменяются C#

230
25 января 2018, 16:37

В запрос не подставляются параметры, делаю так:

using (MySqlCommand command = new MySqlCommand("INSERT INTO users (name, email, password) VALUES ('@username', '@email', '@password')", this.mc))
{
    command.Prepare();
    command.Parameters.AddWithValue("@username", this.username);
    command.Parameters.AddWithValue("@email", this.email);
    command.Parameters.AddWithValue("@password", this.password);
    int numRows = command.ExecuteNonQuery();
    if (numRows > 0)
    {
        return true;
    }
    else
    {
        return false;
    }
}

В итоге в базу добавляются значения так, как они есть в строке запроса изначально, т.е. @username, @email, @password и т.д. Что я делаю не так? Прогуглил, везде делают так, в некоторых местах пишут вместо '@' - ':' или '?' - так тоже пробовал, то же самое. Пробовал при добавлении параметра указывать без символа, т.е.

command.Parameters.AddWithValue("password", this.password);

Так тоже не работает.

Answer 1

Уберите одинарные кавычки вокруг параметров в SQL запросе.

Update

значения им не придавал

Параметры в SQL - это как переменные в C#.

Аналог запроса с кавычками - как у Вас:

string a = "This is value of variable a.";
string b = "Add something to variable a - 'a'";

Аналог запроса без кавычек:

string a = "This is value of variable a.";
string b = $"Add something to variable a - {a}";
READ ALSO
Получить все переменные из класса

Получить все переменные из класса

С помощью определенной функции получаю все ссылки на классы в нужном Gameobject

241
Что такое WinRT и с чем его едят?

Что такое WinRT и с чем его едят?

Рихтер в своей книге целую главу посвятил данному механизму, но я так и не понял в каких сценариях его имеет смысл применять

264
Помогите написать программу в C# [требует правки]

Помогите написать программу в C# [требует правки]

ПриветПомогите написать программу в C#

353
Конвертация char в Virtual-Key Code для unicode

Конвертация char в Virtual-Key Code для unicode

Необходимо передать WM_KEYDOWN через SendMessage, имея unicode char независимо от выбранной пользователем раскладки клавиатуры в конкретное окно

193