Я учусь на c# и нуждаюсь в вашей помощи. Заранее спасибо. Я работаю над этой многопользовательской формой единого входа. Я подключился к локальной базе данных SQL со следующими столбцами: UserID, Password, UserType
Моя проблема в том, что приведенный ниже код работает нормально, если эти три значения верны. Если я, например, введу неправильный пароль, ничего не произойдет.
Это должно быть проблема с частью «Else» моего кода, но я пробовал так много изменений, что даже не помню, когда был близко к тому, чтобы заставить его работать. Пожалуйста помоги. Чтобы переформулировать мои ожидания от проекта: 1. Когда я выбираю Admin или Student из combobox (cmbusertype) и указываю Неверные ИД пользователя и пароль, я должен получить сообщение об ошибке с неверными учетными данными и количество оставшихся попыток. После 3 попыток кнопка входа должна быть отображается серым цветом, и мне предлагается сбросить пароль.
public partial class Loginsystem : Form
{
public Loginsystem()
{
InitializeComponent();
}
int attempts =1;
private void btnlogin_Click(object sender, EventArgs e)
{
if (cmbusertype.SelectedItem == null)
{
MessageBox.Show("Please select User Type to continue...");
cmbusertype.Focus();
return;
}
if (txtuserid.Text == "")
{
MessageBox.Show("Please enter your UserID...");
txtuserid.Focus();
return;
}
if (txtpassword.Text == "")
{
MessageBox.Show("Please enter your password...");
txtpassword.Focus();
return;
}
try
{
SqlConnection con = new SqlConnection(@"Data Source = (LocalDB)\MSSQLlocaldb; Initial Catalog = AdminAuthentication; Integrated Security = True"); ;
SqlCommand cmd = new SqlCommand("select * from SimplifyLogin where userID='" + txtuserid.Text + "' and password='" + txtpassword.Text + "'", con);
SqlDataAdapter sda = new SqlDataAdapter(cmd);
DataTable dt = new DataTable();
sda.Fill(dt);
string cmbItemValue = cmbusertype.SelectedItem.ToString();
if (dt.Rows.Count >0)
{
for (int i = 0; i < dt.Rows.Count; i++)
{
if (dt.Rows[i]["UserType"].ToString() == cmbItemValue) //you can use 2 instead of usertype in that index because usertype column is in 2 index
{
if (cmbusertype.SelectedIndex == 0)
{
MessageBox.Show("You are logged in as " + dt.Rows[i][2]);
MessageBox.Show("Displaying Admin Dashboard");
this.Hide();
}
else
{
MessageBox.Show("Welcome Student! Displaying Exam Options");
this.Hide();
}
}
else
{
MessageBox.Show("Invalid username and/or Password.Please try again. \nAttempts: " + attempts + "out of of 3");
txtpassword.Clear();
attempts++;
}
if (attempts == 4)
{
MessageBox.Show("You have reached maximum login attempts. Click 'Forgot Password' below to reset it.");
btnlogin.Enabled = false;
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
}