Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/16: Рейтинг темы: голосов - 16, средняя оценка - 4.88
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53

Отобразить кнопки в случае наличия строки в БД

18.05.2018, 15:06. Показов 3883. Ответов 71
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, подскажите, в чём может быть ошибка, вообщем, мне нужно из базы вытащить поле с именем логина "admin" и пароль "1234", если данные совпадают, то нужно отобразить кнопки добавления и удаления, а если нет, то оставить их скрытыми...
Вот код, но почему то он не отображает их

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
 private void goodsFrame_Load(object sender, EventArgs e)
        {
            try { 
            MySqlCommand auth = new MySqlCommand("SELECT * FROM сотрудники WHERE логин_сотрудника = 'admin' 
AND пароль = '1234'");
            MySqlDataReader rd = auth.ExecuteReader();
            if (rd.Read())
            {
                mainForm mainForm = new mainForm();
                mainForm.Show();
                mainForm.FormClosed += (object s, FormClosedEventArgs ev) => { this.Show(); };
                this.Hide();
                    add.Visible = true;
                    remove.Visible = true;
            }
            else
            {
 
                MessageBox.Show("Неправильный логин или пароль!", "Ошибка авторизации");
            }
            
        }
            catch
            {
                
            } 
            add.BackgroundImage = Properties.Resources.addButton;
            remove.BackgroundImage = Properties.Resources.removeButton;
        }
Надеюсь на Вашу помощь, заранее всем спасибо!
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.05.2018, 15:06
Ответы с готовыми решениями:

Открытие заданного файла в случае наличия в определённом текстовом файле определённой строки
Здравствуйте, перепробовал много разных вариантов. Вобщем есть txt файл, в котором нужно отследить наличие определенной строки, и если она...

Вставка новой записи или обновление существующей в случае ее наличия
Есть HTML: <div class="input-group"> <span class="input-group-addon">Type</span> <input type="text" name="type"...

Проверка наличия элемента на странице циклом и остановка в случае true
Доброго дня уважаемое сообщество. Возник очень неприятный вопрос. У нас есть скрипт который подгружает некий блок через некое время...

71
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
19.05.2018, 14:43  [ТС]
Студворк — интернет-сервис помощи студентам
теперь понял, а как мне всё таки грамотно написать, чтобы заработало всё? Подскажите, пожалуйста, очень нужно((
Вся суть задания в том, чтобы из базы данных вытащить строку с логином_сотрудника "admin" и паролем "1234" и, если, пользователь заходит под этим логином, то кнопки отображаются у него, а если под другим, то они скрываются с формы
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
19.05.2018, 14:53
Alex4ncho,

Обычно запрашивается поле "пароль" для имени пользователя "пользователь" и в программе сравнивается с тем что ввёл пользователь.
Так вы знаете что именно неверно - имя пользователя или пароль. А ещё пароли в БД обычно хранятся в зашифрованном виде. И ещё названия полей как правило пишут по-английски
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
19.05.2018, 15:02  [ТС]
По английски поля писал, но потому получались ошибки, поэтому пришлось перевести на русские наименования, а подскажите, пожалуйста, как грамотно составить запрос, чтобы он работал?

Добавлено через 53 секунды
Или вообще, как лучше сделать проверку эту?
Мне нужно это добавить срочно, прошу, Вас, помогите, пожалуйста

Добавлено через 6 минут
Просто для меня это первый опыт работы с C# и MySQL, раньше подобным не занимался, поэтому не понимаю, что Вы пишите, вчера пытался целый день изучать то, что Вы писали, но безрезультатно...Надеюсь на Вашу помощь, заранее спасибо большое!
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
19.05.2018, 15:25
Alex4ncho,


Попробуйте, я не запускал, пишу с планшета

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
string usr = "admin";
string pwd = "1234";
using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=1234"))
{
   try
{
connection.Open();
MySqlCommand command = new MySqlCommand();
command.CommandText = String.Format("SELECT пароль FROM sporthit.сотрудники WHERE логин_сотрудника = '{0}'", usr);
command.Connection = connection;
MySqlDataReader reader = command.ExetuteReader();
while(reader.Read())
{
   if (reader.GetString(0) == pwd) MessageBox.Show("Successful login");
   else MessageBox.Show("Wrong password");
   return;
}
MessageBox.Show("User not registered");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
19.05.2018, 15:46  [ТС]
Авторизация проходит, но через любого пользователя видны кнопки

Добавлено через 1 минуту
Хотя наоборот они вообще не видны

Добавлено через 4 минуты
Мне нужно сделать так, чтобы пользователь под админом когда заходит имел кнопки, которые у меня на форме имеются, а, если, например зайдёт под другим логином, который имеется в базе, то у него кнопки пропадали
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
19.05.2018, 21:46
Alex4ncho,

Код из сообщения выше запускали? Какой мессэдж бокс появляется?
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
19.05.2018, 22:07  [ТС]
Запускал, появлялось сообщение Sucsessful login, но это сообщение появлялось всегда, при дальнейшем взаимодействии с программой, например, если я открою другую вкладку, то у меня опять высветится окно с этим сообщением, я подразумеваю, что Вы сделали это для проверки, тогда, как мне теперь сделать разграничение дальше, чтобы при администраторе кнопки имели Visible = true, а при рядовых пользователях, false?
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
19.05.2018, 22:16
Alex4ncho,

Заведите глобальную переменную adminPrivileges.
Вместо мессэдж бокса про успешный логин присваивайте adminPrivileges = true;
А при отрисовке формы где надо админу кнопки показать проверяете значение adminPrivileges. Если true то показываете,если false то не показываете


Перечитал, врубился.

Вам надо в базе сделать ещё одно поле - роль. Админ, оператор....
И предоставлять привилегии админа только пользователя с соответствующей ролью
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 14:18  [ТС]
Можете написать, как именно это написать, пожалуйста, а то боюсь, что опять не получится, так как, заметил, что с синтаксисом шарповским у меня проблемы...

Добавлено через 1 час 19 минут
Я же Вас правильно понял, Вы имели ввиду что-то подобное?
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
  private void goodsFrame_Load(object sender, EventArgs e)
        {
            string usr = "admin";
            string pwd = "1234";
            using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=1234"))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.CommandText = String.Format("SELECT пароль FROM sporthit.сотрудники WHERE логин_сотрудника = '{0}'", usr);
                    command.Connection = connection;
                    MySqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        if (reader.GetString(0) == pwd)
                        {
                            adminPriveleges = true;
                            add.Visible = true;
                            remove.Visible = true;
                        }
                        else
                        {
                            add.Visible = false;
                            remove.Visible = false;
                            MessageBox.Show("Неверный пароль");
                        }
                        return;
                    }
                    //MessageBox.Show("Пользователь не зарегистрирован");
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }                
            add.BackgroundImage = Properties.Resources.addButton;
            remove.BackgroundImage = Properties.Resources.removeButton;
 
        }
Добавлено через 39 секунд
А в шапке формы я задал
C#
1
Boolean adminPriveleges;
Добавлено через 12 часов 53 минуты
А я подумал, мне же запрос менять теперь нужно, верно?
Я создал поле "доступ" Varchar(45) теперь же мне нужно вытащить информацию по этому полю из БД?

Добавлено через 1 час 44 минуты
Что-то у меня не получается сделать это... Видимо я делаю что-то не так, подскажите, пожалуйста
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
20.05.2018, 14:46
Alex4ncho,

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
private bool _adminPrivileges; // поле для хранения значения является ли залогиненый юзер админом
 
public bool AdminPrivileges // свойство 
{
    get
    {
        return _adminPrivileges;
    }
    set
    {
        _adminPrivileges = value;
        add.Visible = value;
        remove.Visible = value;
    }
}
 
 
private void goodsFrame_Load(object sender, EventArgs e)
    {
        string usr = "admin";
        string pwd = "1234";
        using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=1234"))
        {
            try
            {
                connection.Open();
                MySqlCommand command = new MySqlCommand();
                command.CommandText = String.Format("SELECT пароль pwd, доступ role FROM sporthit.сотрудники WHERE логин_сотрудника = '{0}'", usr);
                command.Connection = connection;
                MySqlDataReader reader = command.ExecuteReader();
                while (reader.Read())
                {
                    if (reader.GetString(reader.GetOrdinal("pwd")) == pwd)
                    {
                        MessageBox.Show("Successful login");
                        if (reader.GetString(reader.GetOrdinal("role")) == "admin_role") // здесь admin_role это название Вашей админской роли (не имя пользователя)
                        {
                            this.AdminPrivileges = true;
                        }
                        else
                        {
                            this.AdminPrivileges = false;
                        }
                    else
                    {
                        add.Visible = false;
                        remove.Visible = false;
                        MessageBox.Show("Неверный пароль");
                    }
                    return;
                }
                //MessageBox.Show("Пользователь не зарегистрирован");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }                
        add.BackgroundImage = Properties.Resources.addButton;
        remove.BackgroundImage = Properties.Resources.removeButton;
 
    }
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 15:20  [ТС]
Не работает, пишет Sucessful login и всё, кнопки всё так же не отображаются

Добавлено через 1 минуту
meridbt, я же правильно понял, что в этой строке
C#
1
if (reader.GetString(reader.GetOrdinal("role")) == "admin_role")
вместо admin_role нужно написать право доступа?

Добавлено через 26 минут
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
private void goodsFrame_Load(object sender, EventArgs e)
        {
            string usr = "admin";
            string pwd = "1234";
            using (MySqlConnection connection = new MySqlConnection("datasource=localhost;port=3306;username=root;password=1234"))
            {
                try
                {
                    connection.Open();
                    MySqlCommand command = new MySqlCommand();
                    command.CommandText = String.Format("SELECT пароль pwd, доступ role FROM sporthit.сотрудники WHERE логин_сотрудника = '{0}'", usr);
                    command.Connection = connection;
                    MySqlDataReader reader = command.ExecuteReader();
                    while (reader.Read())
                    {
                        if (reader.GetString(reader.GetOrdinal("pwd")) == pwd)
                        {
                            MessageBox.Show("Successful login");
                            if (reader.GetString(reader.GetOrdinal("role")) == "админ") // здесь admin_role это название Вашей админской роли (не имя пользователя)
                            {
                                this.AdminPrivileges = true;
                            }
                            else
                            {
                                this.AdminPrivileges = false;
                            }
                        }
                        else
                        {
                            add.Visible = false;
                            remove.Visible = false;
                            MessageBox.Show("Неверный пароль");
                        }
                            return;
                        }
                        //MessageBox.Show("Пользователь не зарегистрирован");
                    }
            catch (Exception ex)
                {
                    MessageBox.Show(ex.Message);
                }
            }
            add.BackgroundImage = Properties.Resources.addButton;
            remove.BackgroundImage = Properties.Resources.removeButton;
 
        }
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
20.05.2018, 16:06
Alex4ncho,

Да, правильно.

Точку останова (F9) на 19 строчку кода и шагом с заходом (F11) проверять последовательность выполнения команд
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 16:13  [ТС]
Вот что получилось
Миниатюры
Отобразить кнопки в случае наличия строки в БД  
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 16:45  [ТС]
Вот всё, что связано с точкой остановы
Миниатюры
Отобразить кнопки в случае наличия строки в БД   Отобразить кнопки в случае наличия строки в БД   Отобразить кнопки в случае наличия строки в БД  

Отобразить кнопки в случае наличия строки в БД   Отобразить кнопки в случае наличия строки в БД  
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 20:22  [ТС]
meridbt, что сделать, чтобы заработало?

Добавлено через 3 минуты
подскажите, пожалуйста
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
20.05.2018, 21:26
Alex4ncho,

Судя по скриншотам свойство AdminPrivileges у Вас устанавливается.
Проверьте что там в теле свойства происходит.

add и remove на форму в конструкторе добавляются или в коде?
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 21:46  [ТС]
в конструкторе

Добавлено через 1 минуту
meridbt, в смысле в теле свойства что происходит?

Добавлено через 42 секунды
meridbt, add и remove это я так кнопки назвал, которые расположены на форме у меня, вначале у них свойство Visible = false
0
182 / 145 / 94
Регистрация: 30.07.2013
Сообщений: 579
20.05.2018, 21:50
Цитата Сообщение от Alex4ncho Посмотреть сообщение
в смысле в теле свойства что происходит?
ну вот тут

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
public bool AdminPrivileges // свойство 
{
    get
    {
        return _adminPrivileges;
    }
    set
    {
        _adminPrivileges = value;
        add.Visible = value;
        remove.Visible = value;
    }
}
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 21:55  [ТС]
meridbt, через точку останова не получается посмотреть почему то
0
1 / 1 / 0
Регистрация: 10.10.2017
Сообщений: 53
20.05.2018, 21:58  [ТС]
Вот, что получается
Миниатюры
Отобразить кнопки в случае наличия строки в БД   Отобразить кнопки в случае наличия строки в БД   Отобразить кнопки в случае наличия строки в БД  

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2018, 21:58

Циклическая проверка наличия запущенного процесса и его закрытие в случае обнаружения
Напишите пожалуйста батник который при запуске начинает бесконечно примерно каждые 5 мин. проверять запущен ли процесс проги hl.exe и если...

Отслеживание наличия определённого процесса и выполнение заданной команды в случае его отсутствия
Добрый день, столкнулся с тяжелой проблемой, на которую нет ответа в интернете, я хочу сделать так: При запуске батч файла (cmd)...

Проверка наличия трёх текстовых файлов на диске и объединение их в один файл в случае существования каждого
Проверка наличия трех текстовых файлов на диске и объединения их в один файл. Как сие воплотить? :sorry:

В случае передачи строки, метод выдаёт true, а в случае передачи значения типа int - false
Всем привет! Почему в случае передачи строки, ниже приведённый метод выдаёт true, а в случае передачи значения типа int - false? ...

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
FPS контроллер с анимированными Y-Bot и 3D-звуком miniaudio (Box3D, Recast, BehaviorTree.CPP, ozz-animation, ImGui, OpenGL и SDL3)
8Observer8 18.10.2026
Содержание блога | English Version Полное мультиплатформенное руководство по стартовому проекту с FPS-контроллером игрока, анимированными роботами Y-Bot с 4-слойным блендингом, 3D-физикой Box3D,. . .
Локальный http сервер
Argus19 17.10.2026
Локальный http сервер На работе, на двух локальных компьютерах круглосуточно работают программы опроса приборов с записью в книги Excel,которые раз в сутки записываются на сервер компании. Т. к. . . .
Копировать Windows на новый диск на UEFI
damix 17.10.2026
https:/ / uriesk. wordpress. com/ 2016/ 11/ 01/ move-window-10-to-ssd-on-a-uefi-dualboot-system-with-basic-linux-tools/ TL DR Вставляем диск, а старый подключаем через переходник, грузимся с лайва. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru