Member 13512434 Ответов: 1

Sqlexception был необработан .. Сообщение об ошибке


Я создал логин пользователя с помощью MySql, однако при запуске кода ...


частная LoginButton_Click недействительным(объект отправителя, EventArgs в электронной)
{

SqlConnection sqlcon = new SqlConnection(@"источник данных=HP\SQLEXPRESS;начальный каталог=инвентаризация;Интегрированная безопасность=True");
строка запроса = "выбрать * из пользователей, где имя пользователя = '" + Username_txt.Текст + "' и пароль = '" + Password_txt.Текст + "'";
SqlDataAdapter sda = новый SqlDataAdapter(запрос, sqlcon);
DataTable dtbl = новый DataTable();
sda.Fill(dtbl);

если (dtbl.Строк.Количество == 1)
{
Приборной панели форму mainform = новая приборная панель();
этот.Скрыть();
форму mainform.Показать();
}
еще
{
Ящик для сообщений.Показать("Проверьте свое имя пользователя и пароль");
}
}

я понимаю, что это ошибка ...

"Необработанное исключение типа" System.Data.SqlClient.SqlException" произошло в System.Data.dll

Дополнительная информация: неверный синтаксис рядом с ключевым словом "пользователь". "
в то время как он выделяет " sda.Fill(dtbl);"

Что я уже пробовал:

переписывание кода, двойная проверка соединения

Richard MacCutchan

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

Member 13512434

Привет, я понимаю, что это плохая практика, но что я должен использовать вместо этого?

Richard MacCutchan

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

1 Ответов

Рейтинг:
2

Jochen Arndt

USER является зарезервированным ключевым словом MySQL (и PASSWORD тоже). При использовании таких идентификаторов, как имена таблиц или полей, они должны быть заключены в кавычки или предшествовать имени таблицы для полей.

Видеть MySQL :: MySQL 5.7 справочное руководство :: 9.3 ключевые слова и зарезервированные слова[^].