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

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

25.09.2022, 08:16. Показов 10006. Ответов 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
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
28.09.2022, 19:27
Студворк — интернет-сервис помощи студентам
123valik321, уже лучше, но это поле класса, а нам нужна локальная переменная. Перенесите строку №1 внутрь метода GetAllEmployees. Перед using-ами можете её разместить.

И вы все еще не убрали аргументы у метода GetAllEmployees.

Цитата Сообщение от 123valik321 Посмотреть сообщение
У меня не такой большой объем знаний и опыта в этом, как у вас
Это понятно и ничего плохого в этом нет. Все мы с этого начинали.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
28.09.2022, 19:44  [ТС]
OwenGlendower, я не понимаю что за аргументы
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
28.09.2022, 20:40
123valik321, прочитайте главу учебника про них.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 05:40
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Значит вы неопытный программист раз для вас это для выкрутасы и путаница.
Я вам сказал, что я миддл, достаточно опытный, лучше джуниора.
Я хочу сделать чтобы работало, а не чтобы путать новичков.
Изучать что-то, в том числе и прграммирование, надо от простого к сложному, чтобы в голове всё уложилось и систематизировалось.
Я сам понимаю ваши классы, писал трёхзвенку, но для новичка это сложно и трудно.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
29.09.2022, 07:49  [ТС]
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
35
36
37
List<Employee> people = new List<Employee>();
 
        public List<Employee> GetAllEmployees()
        {
            const string sql = @"
            SELECT
                sotruds.id AS sotruds_id,
                sotruds.f,
                sotruds.i,
                sotruds.o,
                sotruds.address,
                sotruds.logU,
                dolgnosti.id AS dolgnosti_id,
                dolgnosti.name AS dolgnosti_name
            FROM
                sotruds
                INNER JOIN dolgnosti ON sotruds.id_dolgnost = dolgnosti.id
            WHERE
                 logU = @logU
                 AND passU = @passU";
 
 
 
            using (var connection = new MySqlConnection(ConnectionString))
            using (var command = new MySqlCommand(sql, connection))
            {
                command.Parameters.AddWithValue("@logU", login);
                command.Parameters.AddWithValue("@passU", password);
 
                connection.Open();
 
                while (true)
                {
                    dataReader.Read();
                }
            }
        }
предполагаю что это были
C#
1
string login, string password
верно?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 09:47
Цитата Сообщение от 123valik321 Посмотреть сообщение
предполагаю что это были string login, string password верно?
Да, верно.

Добавлено через 7 минут
123valik321, двигаемся дальше по списку.
1) Копируем и вставляем его
2) Даем методу новое имя, убираем аргументы и меняем тип возвращаемого значения на List<Employee>
3) Меняем текст запроса так чтобы возвращались все сотрудники
4) Убираем вызовы AddWithValue
5) В начале методе объявляем и создаем локальную переменную List<Employee>
6) Убираем тело третьего using и заменяем его на цикл while с вызовом dataReader.Read() (пока метод возвращает true цикл должен выполняться). Вызов dataReader.Read() нужно поместить в while - while (dataReader.Read()).
7) Внутри цикла создаем экземпляр Employee из dataReader через конструктор класса - new Employee(dataReader). Добавляем его в список.
8) В конце метода возвращаем список
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Я вам сказал, что я миддл, достаточно опытный, лучше джуниора.
Окей. Предлагаю закончить наш спор и сконцентрироваться на помощи ТСу.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 10:13
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Окей. Предлагаю закончить наш спор и сконцентрироваться на помощи ТСу.
ОКей.

123valik321,

Вам предлагают сделать запрос без параметров, чтобы выводились все, но добавить в запрос на вывод userid.
А позже фильтровать значение Employee из списка по параметру userid.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 10:18
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Вам предлагают сделать запрос без параметров, чтобы выводились все, но добавить в запрос на вывод userid.
А позже фильтровать значение Employee из списка по параметру userid.
Если вы о том что писал, то я это не предлагаю. Мы решаем задачу вывода всех сотрудников.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 10:32
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Если вы о том что писал, то я это не предлагаю. Мы решаем задачу вывода всех сотрудников.
Вы говорите словами. А чтобы написать программу, нужен толк. И я хочу говорить свободно.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 10:42
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Вы говорите словами.
Не только. Я выложил законченный пример.

Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
А чтобы написать программу, нужен толк.
Ну и конечно только вы эксперт по толку, да?

Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
И я хочу говорить свободно.
Говорите, но не искажайте чужие слова.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 10:47
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Не только. Я выложил законченный пример.
ОК, только теперь нужны указания, как его переделать.
Вы, в принципе, написали тезисы.
Я разворачиваю и советую как это реализовать пошагово.

Цитата Сообщение от OwenGlendower Посмотреть сообщение
Говорите, но не искажайте чужие слова.
Я хочу говорить своими словами.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 10:51
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Я хочу говорить своими словами.
У вас явные трудности с пониманием написанного. Я не затыкаю вам рот. Я не запрещаю вам высказывать свое мнение. Но что я не позволю так это искажать мой слова, сбивая ТС с толку.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 11:04
Цитата Сообщение от OwenGlendower Посмотреть сообщение
У вас явные трудности с пониманием написанного. Я не затыкаю вам рот. Я не запрещаю вам высказывать свое мнение. Но что я не позволю так это искажать мой слова, сбивая ТС с толку.
Правду говоря, вы пишите немного сумбурно.
Я только хотел скзать, что нам нужна рабочая модель, чтобы воплотить её в коде.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
29.09.2022, 17:47  [ТС]
OwenGlendower,
Цитата Сообщение от OwenGlendower Посмотреть сообщение
3) Меняем текст запроса так чтобы возвращались все сотрудники
Что-то я плохо себе представляю это, как при условии, для вывода 1 пользователя, вывести всех пользователей
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
29.09.2022, 17:58
Цитата Сообщение от 123valik321 Посмотреть сообщение
Что-то я плохо себе представляю это, как при условии, для вывода 1 пользователя, вывести всех пользователей
Переписать SQL-запрос, удалить условие where по userid, добавить userid в сам запрос и соответсвующее поле в класс Employee. Позже выбирать Employee из списка list<Employee> по userid.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 19:12
Цитата Сообщение от 123valik321 Посмотреть сообщение
Что-то я плохо себе представляю это, как при условии, для вывода 1 пользователя, вывести всех пользователей
Я не понимаю о чем вы. У нас уже есть метод для получения одного пользователя по логину и паролю. Теперь мы делаем то что вы спросили в сообщении #36
Цитата Сообщение от 123valik321 Посмотреть сообщение
а как вывести всех разом (пример: всех сотрудников)
И правильный запрос вы уже привели в сообщении #45. Нужно просто убрать WHERE часть
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
        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
Цитата Сообщение от 123valik321 Посмотреть сообщение
Что-то я плохо себе представляю это, как при условии, для вывода 1 пользователя, вывести всех пользователей
Если по вашему мы обсуждаем не вывод всех пользователей, а что-то другое, то уточните свой вопрос.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
29.09.2022, 19:19  [ТС]
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
List<Employee> people = new List<Employee>();
 
        public List<Employee> GetAllEmployees()
        {
            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();
 
                while (true)
                {
                    dataReader.Read();
                }
            }
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
29.09.2022, 21:36
Цитата Сообщение от 123valik321 Посмотреть сообщение
теперь идем дальше?
угу. Вот текущий статус
1) Копируем и вставляем его
2) Даем методу новое имя, убираем аргументы и меняем тип возвращаемого значения на List<Employee>
3) Меняем текст запроса так чтобы возвращались все сотрудники
4) Убираем вызовы AddWithValue
5) В начале методе объявляем и создаем локальную переменную List<Employee>
6) Убираем тело третьего using и заменяем его на цикл while с вызовом dataReader.Read() (пока метод возвращает true цикл должен выполняться). Вызов dataReader.Read() нужно поместить в while - while (dataReader.Read()).
7) Внутри цикла создаем экземпляр Employee из dataReader через конструктор класса - new Employee(dataReader). Добавляем его в список.
8) В конце метода возвращаем список
Добавлено через 4 минуты
Вы все еще путаете поле класса с локальной переменной. Пример
C#
1
2
3
4
5
6
7
8
class Example
{
    int _x; // Поле
    void Foo()
    {
        int y; // Локальная переменная
    }
}
Нам нужна локальная переменная чтобы метод всегда возвращал новый список.

Далее цикл while. П.6 внимательно прочитайте.

Добавлено через 1 час 32 минуты
И еще - проглядел что-то. Верните блок
C#
1
2
3
4
using (var dataReader = command.ExecuteReader())
{
    // А вот тут уже цикл while должен быть
}
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
30.09.2022, 09:30  [ТС]
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
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())
                    {
                    }
                }
 
            }
        }
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18406 / 14338 / 5370
Регистрация: 17.03.2014
Сообщений: 29,026
Записей в блоге: 1
30.09.2022, 09:58
123valik321, правильно. Осталось сделать
7) Внутри цикла создаем экземпляр Employee из dataReader через конструктор класса - new Employee(dataReader). Добавляем его в список.
8) В конце метода возвращаем список
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.09.2022, 09:58

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU. Опрашиваются регистры. . .
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка: Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru