Почему появляется исключение при изменении пароля, но пароль в базе данных меняется.
Код:
private void button1_Click(object sender, EventArgs e)
{
string connect = "server=localhost;username=root;database=users;password=;";
MySqlConnection connection = new MySqlConnection(connect);
connection.Open();
string zapros = "SELECT email FROM users.data WHERE email='" + textBox1.Text + "'";
string updatepassword = "UPDATE `users`.`data` SET `password`='1122334455' WHERE `email`='" + textBox1.Text + "';";
MySqlCommand command = new MySqlCommand(zapros, connection);
MySqlCommand command1 = new MySqlCommand(updatepassword, connection);
try
{
string resul = command.ExecuteScalar().ToString();
string updpass = command1.ExecuteScalar().ToString();
}
catch (Exception ex)
{
MessageBox.Show("Такого нет!");
}
}
resul отвечает за проверку пользователя в базе данных.
updpass отвечает за смену пароля, если пользователь присутствует.
Ошибка возникает из-за того, что вы пытаетесь получить результат и выполнить update-запрос с помощью ExecuteScalar, но при этом запрос на обновление данных не возвращает ничего. Для вставки, удаления и обновления данных исползуйте методв ExecuteNonQuery:
command1.ExecuteNonQuery()
В случае ошибки выполнения запроса будет выброшено соответствующее исключение класса MySqlException (или, возможно, его наследника).
В данном же случае, вы отсутствующий результат пытаетесь привести к строке, используя toString, и получаете исключение, в виду отсутствия самого результата. А поскольку отлавливаете вы самый верхний класс исключений Exception и не выводите сообщение об ошибке, возникают сложности с отладкой кода.
В дополнение отмечу, что подстановка параметров напрямую в запрос - плохая практика. Используете параметры для передачи значений в запрос.
string updatepassword = "UPDATE `users`.`data` SET `password`='1122334455' WHERE `email`= @email;";
MySqlCommand command1 = new MySqlCommand(updatepassword, connection);
command1.Parameters.AddWithValue("@email", textBox1.Text);
try {
command1.ExecuteNonQuery();
}
catch(MySqlException ex){
// ошибка работы с БД
}
catch(Exception ex){
//прочие возможные ошибки
}
зы: когда вы говорите, что выбрасывается исключение, но при этом пароль меняется, это означает единственное - что ошибка возникает уже после выполнения запроса. А после запроса у вас имеется только вызов .toString, где наиболее вероятно, что результат запроса null
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости