Почему появляется исключение при изменении пароля, но пароль в базе данных меняется.
Код:
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
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Можно ли получить список dns proxy не используя при этом браузер ? Желательно средствами c#?
Если ставить точки останова в скрипте, то при запуске проекта они становятся белыми и пишется, что они недостижимы, однако, на выражения Razor все...
Есть папка в сети, в которой периодически создаются файлыЕсть необходимость копировать данные файлы в другой каталог