Ваш SQL Запрос, который вы создаете, выглядит недействительным
Давайте сосредоточимся на части имени пользователя.
Я могу представить, что txt_usr.Text
содержит имя пользователя, скажем, leo
. Как вы это написали, это даст:
"select * from Login where username"+txt_usr.Text
, что:
select * from Login where usernameleo
(следовательно, причина ошибки, здесь нет условия, просто имя неверный столбец)
Правильный запрос выглядит следующим образом:
select * from Login where username='leo'
или этот
select * from Login where username="leo"
в зависимости от используемого типа базы данных (SQL Server, SQLite, MYSQL, Postgresql, et c ....).
Если вы хотите 2 условия, правильный синтаксис (обычно) должен использовать AND
select * from Login where username="leo" and password='secret'
Итак, вам не хватает знака равенства, логического И и правильной цитаты.
Это еще не все.
!!! Ваш запрос SQL уязвим для инъекции SQL, используйте. NET SQL Параметры !!!
![obligatory XKCD illustration of SQL injection](https://i.stack.imgur.com/YvTHv.png)
иллюстрация : https://xkcd.com/327/
Вместо использования того, что пользователь вводит в текстовое поле (включая потенциальный вредоносный код), правильный способ сделать это в C# должен использовать SQL параметры .
Они позаботятся о санации ввода для вас, и это также будет более понятным в коде, и вам не нужно беспокоиться о цитате:
SqlCommand cmd = new SqlCommand("select * from Login where username=@username AND password=@password", con);
cmd.AddParameter('@username', txt_usr.Text);
cmd.AddParameter('@password', txt_pass.Text);
Даже если это домашнее задание, мы все видели слишком много взломанных сайтов / компаний и настолько легко уничтожаемых или украденных данных, потому что такая уязвимость стала возможной, я думаю, большинство db и эксперты по безопасности постоянно подчеркивают, что вам нужно учиться так быстро, и никогда не используйте неантифицированный ввод для sql запросов.
Другие соображения безопасности
Тот факт, что пароль кажется быть открытым текстом в базе данных также является источником беспокойства, пожалуйста, ищите «открытый текстовый пароль» и «правильно ha sh и соленые пароли», чтобы узнать больше об этом.
Но это немного больше работы, чтобы понять, чем SQL параметры и несколько строк дополнительного кода в вашей программе.