Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/9: Рейтинг темы: голосов - 9, средняя оценка - 4.89
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95

Обработка исключений в формах

01.06.2016, 21:02. Показов 1838. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Стоит задача написать приложение, в котором есть 2 роли (админ и юзер) с конектом к MSSQL. Я создаю форму авторизации, и с помощью try-catch блока проверяю правильность ввода логина и пароля. Здесь всё работает просто отлично.
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
 public partial class LoginForm : Form
    {
        public LoginForm()
        {
            InitializeComponent();
            ActiveControl = textBox1;
            textBox1.Focus();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
 
        private void Exit_button_Click(object sender, EventArgs e)
        {
            this.Close();
        }
 
        private void Login_button_Click(object sender, EventArgs e)
        {
            SqlConnection connection = new SqlConnection(@"Data Source=ZELENSKYI\SQLEXPRESS;Initial Catalog=Login_DB;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=True;ApplicationIntent=ReadWrite;MultiSubnetFailover=False");
            try
            {
                SqlDataAdapter DataAdapter = new SqlDataAdapter("Select Role from Login where Username = '" + textBox1.Text + "' and Password = '" + textBox2.Text + "'  ", connection);
                DataTable LoginTable = new DataTable();
 
                DataAdapter.Fill(LoginTable);
 
                if (LoginTable.Rows[0][0].ToString() == "Admin")
                {
                    AgroAsociation AA_Form = new AgroAsociation();
                    this.Hide();
                    AA_Form.ShowDialog();
                    this.Show();
                }
                else
                {
                    AgroAssociation_Client AA_Form_Client = new AgroAssociation_Client();
                    this.Hide();
                    AA_Form_Client.ShowDialog();
                    this.Show();
                }
 
 
                textBox1.Clear();
                textBox2.Clear();
                
            }
            catch 
            {
                MessageBox.Show("Введены неверные данные. Пожалyйста, проверьте правильность ввода и попробуйте войти ещё раз","AgroAssociationPro 1.0");
            }
 
        }
    }

Дальше я хочу организовать обработку исключения об удалении не существующей строки из бд, а так же добавление уже существующего продукта (2 кнопки). Исключение обрабатывается, но сообщение об ошибке выдаётся из блока try-catch главной формы. Как это исправить, помогите плз...
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
public partial class AgroAsociation : Form
    {
        SqlConnection connection = new SqlConnection(@"Data Source=ZELENSKYI\SQLEXPRESS;Initial Catalog=AgroAssociation;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
 
        public AgroAsociation()
        {
            InitializeComponent();
            ActiveControl = textBox1;
            textBox1.Focus();
 
        }
 
        private void AgroAsociation_Load(object sender, EventArgs e)
        {
        }
 
        private void Incert_button_Click(object sender, EventArgs e)
        {
            Insert_form In_Form = new Insert_form();
            In_Form.Show();
        }
 
        private void Delete_button_Click(object sender, EventArgs e)
        {
            try
            {
                SqlCommand command = new SqlCommand(@"delete Result
                                                  Where Num_vurobka = (Select Num_of_product 
                                                                       from Product 
                                                                       where Name_of_product like '" + textBox1.Text + "') ", connection);
 
 
                connection.Open();
                command.ExecuteNonQuery();
            }
            catch
            {
                MessageBox.Show("Этого продукта нету в Базе данных. Попробуйте удалить другой продукт или обратитесь к Главному администратору", "AgroAssociationPro 1.0");
            }
            finally
            {
                connection.Close();
            }
            delete_Vurobka();
            Delete_Product();
 
            textBox1.Clear();
            MessageBox.Show("Продукт был успешно удалён из базы данных","AgroAssociationPro 1.0");
 
        }
 
        private void delete_Vurobka()
        {
            SqlCommand command = new SqlCommand(@"delete Vurobka
                                                  where Num_of_product = (Select Num_of_product 
                                                                          from Product 
                                                                          where Name_of_product like " + textBox1.Text + ")", connection);
 
            connection.Open();
            command.ExecuteNonQuery();
            connection.Close();
        }
        private void Delete_Product()
        {
 
            SqlCommand command = new SqlCommand(@"delete Product
                                                  Where Name_of_product like " + textBox1.Text + "", connection);
 
            connection.Open();
            command.ExecuteNonQuery();
            connection.Close();
        }
    }
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.06.2016, 21:02
Ответы с готовыми решениями:

Обработка исключений. Как организовать общий обработчик исключений?
У меня есть последовательность вызова методов для внесения данных в таблицу БД. Сам метод внесения данных. Он генерирует исключение ...

Обработка исключений
Есть клиент-серверная программа учёта товаров на складе. Всю информацию из БД вычитываю в datagrid. При добавлении нового товара заполняю...

Обработка исключений
Помогите решить следующий вопрос: имеется БД Access к не выполняется запрос на добавление записи таблицу. В одну запись входит 5...

4
0 / 0 / 0
Регистрация: 01.06.2016
Сообщений: 1
01.06.2016, 21:43
По идее тебе нужно добавить блоки таким образом:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
 
        private void delete_Vurobka()
        {
            SqlCommand command = new SqlCommand(@"delete Vurobka
                                                  where Num_of_product = (Select Num_of_product 
                                                                          from Product 
                                                                          where Name_of_product like " + textBox1.Text + ")", connection);
            try{
 
                 connection.Open();
                 command.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
            MessageBox.Show(ex.ToString(), "AgroAssociationPro 1.0");
            }
            finally
            {
            connection.Close();
            }
        }
        private void Delete_Product()
        {
 
            SqlCommand command = new SqlCommand(@"delete Product
                                                  Where Name_of_product like " + textBox1.Text + "", connection);
 
            try{
 
                 connection.Open();
                 command.ExecuteNonQuery();
            }
            catch(Exception ex)
            {
            MessageBox.Show(ex.ToString(), "AgroAssociationPro 1.0");
            }
            finally
            {
            connection.Close();
            }
        }
0
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
01.06.2016, 21:54  [ТС]
Да, спасибо, сейчас всё верно, но теперь выдаёт 2 исключения и 1 сообщение о том, что всё прошло успешно)
0
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
01.06.2016, 23:06  [ТС]
Переделал таким образом, вроде работает (удаляет значение , которое я говорю удалить в 1 функции). Но после удаления данных из 1 таблицы не хочет удалять данные из остальных... вот код и диаграмма (мб с запросами намудрил. Хотя на сервере всё пашет....)
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
public partial class AgroAsociation : Form
    {
        SqlConnection connection = new SqlConnection(@"Data Source=ZELENSKYI\SQLEXPRESS;Initial Catalog=AgroAssociation;Integrated Security=True;Connect Timeout=15;Encrypt=False;TrustServerCertificate=False");
 
        public AgroAsociation()
        {
            InitializeComponent();
            ActiveControl = textBox1;
            textBox1.Focus();
 
        }
 
        private void AgroAsociation_Load(object sender, EventArgs e){  }
 
        private void Incert_button_Click(object sender, EventArgs e)
        {
            Insert_form In_Form = new Insert_form();
            In_Form.Show();
        }
 
        private void Delete_button_Click(object sender, EventArgs e)
        {
                       
            delete_Result();
            delete_Vurobka();
            Delete_Product();
    }
        
        private void delete_Result()
        {
            try
            {
                SqlCommand command = new SqlCommand(@"delete Result
                                                  Where Num_vurobka = (Select Num_of_product 
                                                                       from Product 
                                                                       where Name_of_product like '" + textBox1.Text + "') ", connection);
 
 
                connection.Open();
                command.ExecuteNonQuery();
 
 
            }
            catch (Exception ex)
            {
                MessageBox.Show("1 блок", "AgroAssociationPro 1.0");
            }
            finally
            { connection.Close(); }
        }
        private void delete_Vurobka()
        {
            try
            {
                SqlCommand command = new SqlCommand(@"delete Vurobka
                                                      where Num_of_product = (Select Num_of_product 
                                                                                from Product 
                                                                                where Name_of_product like " + textBox1.Text + ")", connection);
 
                connection.Open();
                command.ExecuteNonQuery();
                
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "AgroAssociationPro 1.0");
            }
            finally
            { connection.Close(); }
        }
        private void Delete_Product()
        {
            try
            {
                SqlCommand command = new SqlCommand(@"delete Product
                                                      Where Name_of_product like " + textBox1.Text + "", connection);
 
                connection.Open();
                command.ExecuteNonQuery();
                MessageBox.Show("Продукт был успешно удалён из базы данных", "AgroAssociationPro 1.0");
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString(), "AgroAssociationPro 1.0");
            }
            finally
            { connection.Close(); }
            textBox1.Clear();
            
        }
    }
Миниатюры
Обработка исключений в формах  
0
 Аватар для МихаилЗеленски
1 / 1 / 2
Регистрация: 14.10.2015
Сообщений: 95
01.06.2016, 23:48  [ТС]
Проблема Решена) Проблема была в плохом знании запросов) перед подзапросом нельзя ставить =, нужно ставить IN, а остальное работает верно)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.06.2016, 23:48
Помогаю со студенческими работами здесь

Обработка исключений
Доброго времени суток,уважаемые форумчане.Помогите с обработкой исключений. Сделал функцию скачивания файла в другом потоке.Если например...

Обработка исключений
В моей программе при обработке исключения вызывается метод out_of_range try { ...

Обработка исключений, оператор if
Вот такой вот кусочек кода. В данном случае функция возвращает строку, которая формируется из ответа по запросу файла по сети. Если...

Обработка исключений сервера при WebClient.DownloadFile
Серверное приложение на ASP.NET отдаёт файл по определенному запросу. Клиентское приложение с помощью метода WebClient.DownloadFile...

Обработка исключений с пмощью структурированной обработки исключений
Есть функция, которая определенным образом работает с файлами,но при работе с файлами "не подходящего" типа вызывается...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru