Ваша ошибка связана с неправильным синтаксисом SQL-запроса. Сообщение об ошибке указывает на некорректное использование оператора "=".
Проблема, скорее всего, в пробелах вокруг символа "=" в строке cmd.CommandText. В вашей строке SQL-запроса эти символы должны быть без пробелов:
cmd.CommandText = "SELECT login, password, role FROM Users WHERE login=@login AND password=@password";
Попробуйте изменить строку cmd.CommandText следующим образом:
cmd.CommandText = "SELECT login, password, role FROM Users WHERE login=@login AND password=@password";
Обновленный код должен выглядеть так:
using (SqlConnection conn = new SqlConnection(Program.ConnectionString))
{
conn.Open();
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT login, password, role FROM Users WHERE login=@login AND password=@password";
cmd.Parameters.AddWithValue("@login", login);
cmd.Parameters.AddWithValue("@password", password);
var reader = cmd.ExecuteReader();
bool exists = reader.Read();
if (exists)
{
MessageBox.Show("Успех");
string role = reader.GetString(2);
if (role != "master")
{
Form3 f = new Form3();
f.Show();
}
else if (role != "client")
{
// Ваш код для роли, отличной от "client"
}
}
else
{
MessageBox.Show("Неверный логин или пароль");
}
}