Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Visual Studio c# исключение не обработано

Елена Лахина Ученик (123), на голосовании 5 месяцев назад
Как исправить ошибку?
Голосование за лучший ответ
Татьяна Просветленный (36374) 6 месяцев назад
Ваша ошибка связана с неправильным синтаксисом 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("Неверный логин или пароль");
}
}
Jurijus Zaksas Искусственный Интеллект (445791) 6 месяцев назад
Включить лог запросов в базе, если таковой не включен, посмотреть итоговый текст запроса и от этого плясать.
Xttx Мыслитель (9003) 6 месяцев назад
Как минимум, при конкатенации строк не хватает пробела.
"... From Users" + "WHERE login=..."
даст:
"..From UsersWhere login=..."

Он трактует этот "UsersWhere" как имя таблицы и не понимает что идёт дальше. Добавь пробел либо после "Users" либо перед "Where".
Похожие вопросы