Вот исправление в одну строку:
.... if (rdr[3].ToString() == pw).....
Причина, по которой вы получаете ошибку, состоит в том, что вы сравниваете ячейку данных с типом данных ...
Но давайтеВыучите немного больше, не так ли?
Во-первых, ваш оператор SQL не имеет смысла.Давайте посмотрим на это:
"SELECT * FROM `users` WHERE '" + un + "'"
Итак, вы используете предложение Where
.Давайте поговорим об общей грамматике.Когда мы используем какое-либо слово, связанное с WH
, разве мы не должны давать информацию о чем-то?Мол, вы не можете просто сказать:
Брайан отправился в Нью-Джерси, где ...
Вместо этого вы могли бы сказать:
Брайанотправился в Нью-Джерси, где оставил куки-файлы своего браузера.
То же правило применяется к операторам SQL.Когда вы используете предложение Where
, вы фактически проверяете, совпадает ли какое-либо значение с данным значением ....
Вот как выглядит правильное использование оператора Where
:
Select * From Table Where Column1 = 'Some Value'
Двигаемся дальше ...
Вы используете IDataReader
, который здесь совершенно не нужен.Почему бы просто не сравнить все значения внутри самого оператора SQL?Просто используйте AND
, чтобы сделать несколько сравнений ...
И, как вы упоминали, вы храните имена пользователей и пароли в базе данных.Рекомендуется хранить имя пользователя и хэш пароля.Для этого у вас есть множество вариантов, таких как Argon2, bcrypt, scrypt или PBKDF2 .
Последнее, но не менее важное: самая большая проблема с вашим кодом - следующая строка:
MessageBox.Show(username + ", Has Logged in!", "API");
После долгих лет разработки разработчики пришли с такими паттернами, как MVVM, для масштабируемости, производительности и чего-то еще.Тогда почему ты живешь в 17 веке?Всегда помните:
Вы потратите 20% времени на написание кодов и 80% на его обслуживание.
Поэтому не пишите такие коды, связанные с пользовательским интерфейсом, вСам пользовательский интерфейс.Если вы знакомы с паттерном MVVM, вы уже знаете, о чем я говорю ...
В любом случае, надеюсь, что вы чему-то научились ... И если я где-то ошибся, не стесняйтесь исправить это.Капешишь?