Итак, у меня есть форма входа в систему, в которой пользователю необходимо войти в основную форму. У меня есть база данных с таблицей, созданной для хранения имен пользователей и паролей, для входа в приложение.C# - Несколько пользователей из базы данных SQL для формы входа
Если пользователь вводит правильное имя пользователя и пароль и заходит на логин, он должен взять его/ее в основную форму. Это я знаю, как это сделать, но как я могу получить имена пользователей и пароли из базы данных SQL и проверить, существуют ли они, и если они существуют, правильно ли это имя пользователя для правильного пароля или наоборот?
Как я уже сказал, я создал базу данных SQL для хранения имен пользователей и паролей. Затем я сохранил пользователя с именем пользователя и паролем как «admin», только для целей тестирования.
Я пробовал этот следующий код, но он не позволяет мне войти в систему, даже если я набрал правильное имя пользователя и пароль.
string username;
string password;
private void btnLogin_Click(object sender, EventArgs e)
{
try
{
SqlCeConnection con = new SqlCeConnection(@"connectionString");
SqlCeCommand com = new SqlCeCommand("SELECT username, password FROM UsersPass WHERE username = '" + txtUsername.Text + "' AND password = '" + txtPassword.Text + "'", con);
con.Open();
if (con.State == ConnectionState.Open)
{
SqlCeDataReader dtr = com.ExecuteReader();
while (dtr.Read())
{
username = dtr["username"].ToString();
password = dtr["password"].ToString();
if (username == txtUsername.Text && password == txtPassword.Text)
{
Mainform frm = new Mainform();
frm.Show();
this.Hide();
}
else
{
MessageBox.Show("Invalid credentials!\nPlease enter a valid username and password to continue.", "Login Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}
catch (Exception)
{
MessageBox.Show("Erorr", "Error");
}
}
Простите меня, если мне не хватает чего-то совершенно очевидного, я довольно новичок в C#. Спасибо заранее.
Используйте SQL-параметры, а не конкатенацию строки для SQL. И никогда, никогда не храните пароли как открытый текст. И если есть исключение, поделитесь полным сообщением об ошибке. – Plutonix
Во-первых, ознакомьтесь с Sql Injection. Во-вторых, прочтите шифрование. В-третьих, прочитайте ключевое слово 'using' C#. – mxmissile
Вам не нужно 'if (con.State == ConnectionState.Open)' Если соединение не открыто, будет выбрано исключение. –