Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.90/40: Рейтинг темы: голосов - 40, средняя оценка - 4.90
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
MySQL

Вывод данных авторизованного пользователя

25.09.2022, 08:16. Показов 9674. Ответов 123

Студворк — интернет-сервис помощи студентам
Всем привет!
У меня не получается создать вывод данных авторизованного пользователя. Мучаюсь вторую неделю и много чего посмотрел, прочитал, пробовал использовать, но ничего не получилось.
Пробовал передать данные через переменную с одной формы на другую и там в запросе их сравнить, но ничего опять же не вышло.
Может кто-нибудь помочь дописать код, пожалуйста?
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
using MySql.Data.MySqlClient;
using System.Data;
using System.Data.Common;
using System.Windows.Forms;
using static Cafe_BK.Form2;
 
namespace Cafe_BK
{
    public partial class Form1 : Form
    {
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        private void button2_Click(object sender, EventArgs e)
        {
            String logUser = login.Text;
            String passUser = password.Text;
 
            DB db = new DB();
            DataTable table = new DataTable();
            MySqlDataAdapter adapter = new MySqlDataAdapter();
 
            MySqlCommand command = new MySqlCommand("SELECT * FROM `sotruds` WHERE `logU` = @ul AND `passU` = @uP", db.getConnection());
            command.Parameters.Add("@uL", MySqlDbType.VarChar).Value = logUser;
            command.Parameters.Add("@uP", MySqlDbType.VarChar).Value = passUser;
            adapter.SelectCommand = command;
            adapter.Fill(table);
            
 
            if (table.Rows.Count > 0)
            {
                if (table.Rows[0]["id_dolgnost"].ToString() == "1")
                {
                    databank.text = login.Text;
                    Form2 form2 = new Form2();
                    form2.Show();
                }
                else if (table.Rows[0]["id_dolgnost"].ToString() == "2")
                {
                    Form3 form3 = new Form3();
                    form3.Show();
                }
                else if (table.Rows[0]["id_dolgnost"].ToString() == "3")
                {
                    Form4 form4 = new Form4();
                    form4.Show();
                }
                else if (table.Rows[0]["id_dolgnost"].ToString() == "4, 5")
                {
                    Form5 form5 = new Form5();
                    form5.Show();
                }
                else if (table.Rows[0]["id_dolgnost"].ToString() == "6")
                {
                    Form6 form6 = new Form6();
                    form6.Show();
                }
            }
            else
                MessageBox.Show("вы не авторизованы");
        }
    }
}

2 форма
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
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.Data.SqlClient;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
using Microsoft.VisualBasic.Logging;
using MySqlX.XDevAPI;
using System.Xml.Linq;
using NPOI.SS.Formula.Functions;
 
namespace Cafe_BK
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
            MySqlConnection con = new MySqlConnection("server=127.0.0.1;port=3306;username=root;password= ; database=BK");
            con.Open();
            MySqlDataAdapter da = new MySqlDataAdapter("SELECT sotruds.id,sotruds.f,sotruds.i,sotruds.o,sotruds.address, dolgnosti.name FROM sotruds\r\nINNER JOIN dolgnosti ON sotruds.id_dolgnost = dolgnosti.id", con);
            MySqlCommandBuilder cb = new MySqlCommandBuilder(da);
                        DataSet ds = new DataSet();
            da.Fill(ds, "sotruds");
 
            
 
            dataGridView1.DataSource = ds.Tables[0];
            label1.Text = databank.text;
 
        }
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
 
        }
 
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
25.09.2022, 08:16
Ответы с готовыми решениями:

Вывод данных авторизованного пользователя
Здравствуйте, помогите пожалуйста! Есть форма, на которой проходит авторизация. При успешной авторизации необходимо вывести на вторую...

Отображение данных авторизованного пользователя
public partial class Form3 : Form { OleDbConnection DBConnection = new OleDbConnection(); OleDbDataAdapter...

Как выводить данные авторизованного пользователя?
Здравствуйте, кто знает, как выводить данные авторизованного пользователя? Здесь я авторизуюсь через логин(email) и пароль и если я ввожу...

123
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 10:44  [ТС]
Студворк — интернет-сервис помощи студентам
Добавлено через 5 минут
OwenGlendower, что-не понимаю, правильно?
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
 public List<Employee> GetAllEmployees()
        {
            List<Employee> people = new List<Employee>();
            const string sql = @"
            SELECT
                sotruds.id AS sotruds_id,
                sotruds.logU,
                sotruds.f,
                sotruds.i,
                sotruds.o,
                sotruds.address,
                dolgnosti.id AS dolgnosti_id,
                dolgnosti.name AS dolgnosti_name
            FROM
                sotruds
                INNER JOIN dolgnosti ON sotruds.id_dolgnost = dolgnosti.id";
 
 
            using (var connection = new MySqlConnection(ConnectionString))
            using (var command = new MySqlCommand(sql, connection))
            {
 
                connection.Open();
 
                using (var dataReader = command.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        Employee Employee = new Employee(dataReader);
                    }
                }
 
            }
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 10:47
123valik321, пока всё правильно. И вы можете перестать рожать по одной строке кода в день и сразу дописать метод до конца? Сами, без лишних подсказок. Вся информация у вас уже есть.
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
01.10.2022, 10:58
Цитата Сообщение от 123valik321 Посмотреть сообщение
C#
1
Employee Employee = new Employee(dataReader);
C#
1
Employee employee = new Employee(dataReader);
Так как название переменной типа класс.

Ещё в цикле после чтения Employee из Reader добавить
C#
1
people.Add(employee);
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 11:28
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Так как название переменной типа класс.
К вашему сведению - правила языка такое допускают.
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
01.10.2022, 11:30
А в самом конце процедуры
C#
1
return people;
Добавлено через 1 минуту
Цитата Сообщение от OwenGlendower Посмотреть сообщение
К вашему сведению - правила языка такое допускают.
В C++ и Java нельзя и в C# путаница.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 11:59
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
В C++ и Java нельзя
Вы ошибаетесь

https://onlinegdb.com/-l2-oFZQn

https://onlinegdb.com/qkHcv1cnU
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 12:16  [ТС]
OwenGlendower, дописать нет, так как не понимаю, и еще, забыл про ошибку
"EmployeeRepository.GetAllEmployees( )": не все пути возвращают значение.
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
01.10.2022, 12:22
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Вы ошибаетесь
Всё равно идентификатор неуникальный. Читать программу неудобно. Можно легко запутаться.

Добавлено через 3 минуты
123valik321,

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
 
public List<Employee> GetAllEmployees()
        {
            List<Employee> people = new List<Employee>();
            const string sql = @"
            SELECT
                sotruds.id AS sotruds_id,
                sotruds.logU,
                sotruds.f,
                sotruds.i,
                sotruds.o,
                sotruds.address,
                dolgnosti.id AS dolgnosti_id,
                dolgnosti.name AS dolgnosti_name
            FROM
                sotruds
                INNER JOIN dolgnosti ON sotruds.id_dolgnost = dolgnosti.id";
 
 
            using (var connection = new MySqlConnection(ConnectionString))
            using (var command = new MySqlCommand(sql, connection))
            {
 
                connection.Open();
 
                using (var dataReader = command.ExecuteReader())
                {
                    while (dataReader.Read())
                    {
                        Employee employee = new Employee(dataReader);
                        people.Add(employee);
                    }
                }
 
            }
 
            return people;
        }
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 12:31  [ТС]
Ludwig Valentin, меня послали с ошибкой на 3 буквы
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 12:33
Цитата Сообщение от 123valik321 Посмотреть сообщение
дописать нет, так как не понимаю
Вам дали пошаговую инструкцию. Почему так сложно её выполнить? Ludwig Valentin, уже вас выручил, выложив законченный пример.

Цитата Сообщение от 123valik321 Посмотреть сообщение
и еще, забыл про ошибку
"EmployeeRepository.GetAllEmployees( )": не все пути возвращают значение.
Если у нас не void метод, то там должен быть return чего-то. Даже начинающий это должен знать.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 12:42  [ТС]
OwenGlendower, так, с ошибкой разобрался
Цитата Сообщение от 123valik321 Посмотреть сообщение
Ludwig Valentin, меня послали с ошибкой на 3 буквы
, но после того как авторизовался мне вывело только одного сотрудника
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 12:45
Цитата Сообщение от 123valik321 Посмотреть сообщение
но после того как авторизовался мне вывело только одного сотрудника
Сколько всего сотрудников в БД? Метод GetAllEmployees() вы не забыли вызвать?
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
01.10.2022, 12:51
Цитата Сообщение от 123valik321 Посмотреть сообщение
меня послали с ошибкой
C#
1
2
3
4
5
6
7
8
try (
          // connect
)
catch (SQLException e)
{
     // здесь можно обработать исключение
     // а можно просто оставить в игноре
}
Это чтобы программа не вываливалась.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 12:55
Ludwig Valentin, более дурацкого совета тут трудно придумать. Строку подключения нужно было исправить, а не добавлять try/catch который все равно не сработает потому что написан под MS SQL.
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
01.10.2022, 13:05
Цитата Сообщение от OwenGlendower Посмотреть сообщение
а не добавлять try/catch который все равно не сработает потому что написан под MS SQL.
try catch нужен хотя бы на случай аварии БД или сети.
Ну да, exception для MySQL надо ловить.

Добавлено через 8 минут
Вот как ловить исключение для MySQL
https://dev.mysql.com/doc/conn... rrors.html
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 13:12
Ludwig Valentin, еще раз - не надо тут ничего ловить. Это не исправит проблему, которую у него была. Да и ТС врядли разбирается в исключениях чтобы грамотно их обработать.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 17:30  [ТС]
OwenGlendower,
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Сколько всего сотрудников в БД? Метод GetAllEmployees() вы не забыли вызвать?
Сотрудника два, а метод забыл вызвать, сейчас пришел с работы и пытался вызвать его, не получилось

Добавлено через 1 минуту
Ludwig Valentin,
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Это чтобы программа не вываливалась.
Она вывалилась из-за того что локальный сервер упал
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 17:36
Цитата Сообщение от 123valik321 Посмотреть сообщение
Сотрудника два, а метод забыл вызвать, сейчас пришел с работы и пытался вызвать его, не получилось
Не. Получилось. Вызвать. Метод. Вас снова нужно отправить читать учебник?

Добавлено через 4 минуты
Или хотя бы посмотрите на пример приведенный в сообщении #9. В классе Form1 вызывается метод GetEmployee. Сделайте по аналогии.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
01.10.2022, 19:00  [ТС]
OwenGlendower, Нас такому и не учили, это во в первых, во вторых как вызвать метод "GetAllEmployee", если мы вызываем целый класс без указания самого метода?

Добавлено через 52 минуты
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Или хотя бы посмотрите на пример приведенный в сообщении #9. В классе Form1 вызывается метод GetEmployee. Сделайте по аналогии.
а, не увидел это сообщение, попробую

Добавлено через 26 минут
OwenGlendower,
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
private void button2_Click(object sender, EventArgs e)
        {
            EmployeeRepository repository = new EmployeeRepository();
            Employee employee = repository.GetEmployee(login.Text, password.Text);
 
            EmployeeRepository repository1 = new EmployeeRepository();
            Employee employee1 = repository1.GetAllEmployees(login.Text, password.Text);
 
            if (employee == null)
            {
                MessageBox.Show("вы не авторизованы");
            }
            else
            {
                var form = CreateForm(employee);
                if (form != null)
                {
                    form.Show();
                }
                else
                {
                    MessageBox.Show($"Неизвестный идентификатор должности '{employee.PositionId}'");
                }
            }
        }
не получается, тупой я напрочь
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
01.10.2022, 21:02
Цитата Сообщение от 123valik321 Посмотреть сообщение
Нас такому и не учили, это во в первых
Не может такого быть. Это основы без изучения которых вам не могли дать подобное задание. Где вы учитесь?

Цитата Сообщение от 123valik321 Посмотреть сообщение
во вторых как вызвать метод "GetAllEmployee", если мы вызываем целый класс без указания самого метода?
Я не понял что вы хотели этим сказать.

Цитата Сообщение от 123valik321 Посмотреть сообщение
а, не увидел это сообщение, попробую
Что значит не видели? Вы использовали код из него для написания метода GetAllEmployees.

Цитата Сообщение от 123valik321 Посмотреть сообщение
не получается, тупой я напрочь
Завязывайте с самоуничижением. Только вредите себе.

Теперь к коду. Ответье на следующие вопросы:
1) Зачем после авторизации получать список всех сотрудников? Вы вроде хотели выводить его в Form2?
2) Выражение repository1.GetAllEmployees(login.Text, password.Text) должно было вам дать ошибку компиляции. Какую? Как вы её поняли?
3) Какой тип возвращает GetAllEmployees?
4) Сколько аргументов принимает метод GetAllEmployees?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.10.2022, 21:02

Авторизация в приложении и отображение данных только авторизованного пользователя
Помогите пожалуйста, не могу решить проблему. Создаю приложение. Есть окно авторизации, откуда происходит переход на главное окно, а в...

ID авторизованного пользователя
Добрый вечер, ребята просьба о помощи. Работаю с локальной базой данных в первые Мне необходимо чтобы я авторизованный пользователь...

Вывести поручения авторизованного пользователя
Добрый день, подскажите пожалуйста, делаю приложение на c# WF с mssql server, есть форма для админа и форма для пользователей, у каждого...

Как переправить авторизованного пользователя с сайта на сайт
Необходимо авторизовать пользователя в одном веб-приложении и передать его в другое веб-приложение. Как пример - .NET Passport от Microsoft...

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


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

Или воспользуйтесь поиском по форуму:
100
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства. Родственных связей существует 8 ступеней, такие как: p - отец P - мать q - муж Q - жена b - брат B - сестра s - сын S - дочь
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире. Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru