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

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

25.09.2022, 08:16. Показов 9864. Ответов 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
25.09.2022, 12:44  [ТС]
Студворк — интернет-сервис помощи студентам
OwenGlendower,
Он в каждой последующей строчке это выдает
То есть я убрал строчку с "f", потом запустил, теперь ошибка в "i"
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
25.09.2022, 12:51
Цитата Сообщение от 123valik321 Посмотреть сообщение
Он в каждой последующей строчке это выдает
То есть я убрал строчку с "f", потом запустил, теперь ошибка в "i"
Извините, что вмешиваюсь.
Сначала отладьте запрос в консоли MySQL, а потом зашивайте его в коде C#.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
25.09.2022, 19:16
123valik321, как успехи? Нашли ошибку в запросе?
Кликните здесь для просмотра всего текста
запятой после sotruds.logU не хватает
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
25.09.2022, 19:52  [ТС]
OwenGlendower,
запятую-то я нашел, что не хватает, но код по прежнему ошибку выдает, другую, но выдает:
MySql.Data.MySqlClient.MySqlException: "Invalid attempt to access a field before calling Read()"
буду щас смотреть что не так

Добавлено через 7 минут
Ludwig Valentin,
sql код я исправил момент с запятой, спасибо
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
25.09.2022, 20:07
123valik321, это еще одна моя ошибкаю. Во что бывает когда набираешь код без проверки. В EmployeeRepository вместо
C#
1
return dataReader.HasRows ? new Employee(dataReader) : null;
пишем
C#
1
return dataReader.Read() ? new Employee(dataReader) : null;
Добавлено через 7 минут
Исправил код в своем ответе
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
25.09.2022, 20:31  [ТС]
OwenGlendower,

получилось тоже самое что и при моем коде, а мне надо что в lable вывело фио авторизованного сотруника
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
25.09.2022, 20:41
123valik321, простите за прямоту, но что это за детский сад? В классе Employee есть ФИО: Surname, Name и Patronymic. Так трудно заменить employee.Login на строку собранную из этих свойств?
1
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
26.09.2022, 02:19
123valik321,

Кстати, какой кретин у вас проектировал базу данных?
Имена полей в таблицах надо давать "говорящие", а не шифры.
А вообще запрос
SQL
1
SELECT sotruds.f +' ' + sotruds.i + ' ' + sotruds.o AS fio FROM sotruds WHERE sotruds.id = @ID
Или склеить в коде C# из трёх полей рекордсета
C#
1
string fio = table.Rows[0]["f"] + " " + table.Rows[0]["i"] + " " + table.Rows[0]["o"];
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
26.09.2022, 08:07  [ТС]
OwenGlendower, Спасибо за помощь и прошу прощение, ну тупой я, да, признаю

Добавлено через 2 минуты
Ludwig Valentin,
Я делал, имена полей можно и изменить, а вот написать код в ограниченное время, чтобы он работал как надо, нет
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
26.09.2022, 08:16
Цитата Сообщение от 123valik321 Посмотреть сообщение
Я делал, имена полей можно и изменить, а вот написать код в ограниченное время, чтобы он работал как надо, нет
Вам нужен системный подход.
Будьте немного аккуратнее и всё у вас получится.
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
26.09.2022, 08:16  [ТС]
OwenGlendower,
Извините пожалуйста, но вопрос, а в dataGridView как вывести данные о пользователе? Я попробую что-то сделать но не уверен что получится, ибо с такой структурой написания кода, которую вы скинули, я мало работал, и как объединить с таблицей не знаю.
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
26.09.2022, 08:26
Цитата Сообщение от 123valik321 Посмотреть сообщение
а в dataGridView как вывести данные о пользователе?
Я отвечу.
Добавить данные о пользователе в SQL-запрос.
Если надо включать данные из другой таблицы, то JOIN.
https://www.w3schools.com/mysql/mysql_join.asp
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
26.09.2022, 08:34
Лучший ответ Сообщение было отмечено 123valik321 как решение

Решение

Цитата Сообщение от 123valik321 Посмотреть сообщение
а в dataGridView как вывести данные о пользователе?
Об одном пользователе? Элементарно
C#
1
dataGridView.DataSource = new List<Employee>() { employee };
1
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
26.09.2022, 08:46
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Об одном пользователе? Элементарно
А нужны ещё, наверное, заголовки полей в таблице и по русски. А это можно сделать только вручную.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
26.09.2022, 08:55
Ludwig Valentin, в моем понимании заголовки можно в дизайнере заранее настроить. Или повесить атрибуты System.ComponentModel.DisplayName на свойства класса Employee.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
26.09.2022, 09:25  [ТС]
OwenGlendower, 1) а как вывести всех разом (пример: всех сотрудников), 2) и вывести столбцы выборочно (пример: 1 и 3 столбец)?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18392 / 14323 / 5370
Регистрация: 17.03.2014
Сообщений: 28,999
Записей в блоге: 1
26.09.2022, 12:19
Лучший ответ Сообщение было отмечено 123valik321 как решение

Решение

Цитата Сообщение от 123valik321 Посмотреть сообщение
1) а как вывести всех разом (пример: всех сотрудников)
По аналогии с одним. Добавляете в класс EmployeeRepository новый метод GetAllEmployees, который получает всех сотрудников, заносит их в List<Employee> и возвращает его. Для запроса используем SqlDataReader и уже готовый конструктор класса Employee принимающий IDataRecord. Для отображения используем DataSource как уже показывал, только List теперь создавать не нужно.

Цитата Сообщение от 123valik321 Посмотреть сообщение
2) и вывести столбцы выборочно (пример: 1 и 3 столбец)?
Самое простое скрыть ненужные столбцы. Условно:
C#
1
dataGridView.Columns[0].Visible = false;
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
27.09.2022, 06:31  [ТС]
OwenGlendower,
Видимо я тупой, да, я добавил
Цитата Сообщение от OwenGlendower Посмотреть сообщение
в класс EmployeeRepository новый метод GetAllEmployees, который получает всех сотрудников, заносит их в List<Employee> и возвращает его.
, а дальше не получается,
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Для запроса используем SqlDataReader
я не понял как его использовать
0
Markiz Red Devil
 Аватар для Ludwig Valentin
171 / 296 / 26
Регистрация: 11.08.2022
Сообщений: 3,868
27.09.2022, 06:42
Цитата Сообщение от 123valik321 Посмотреть сообщение
Для запроса используем SqlDataReader
я не понял как его использовать
https://learn.microsoft.com/ru... datareader
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
27.09.2022, 07:17  [ТС]
Ludwig Valentin, не сильно помогло
 Комментарий модератора 
По интерфейсу форума. Чтобы упомянуть пользователя щелкните по его нику. Открывать меню и нажимать на ник там не нужно т.к. тогда в ответ будет добавлена ненужная ссылка на профиль.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
27.09.2022, 07:17

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Скрипты 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) активировать флаг. . .
Архитектура биовида Стива в Майнкрафте: Зачем бонобо кубический каннибализм
anaschu 30.08.2026
Кубический Вагинокапитализм в Minecraft: Математический инвариант ОДУ и рок Стивов-бонобо Главная задача разработанной «Модели Всего» — наглядно продемонстрировать наличие системной «судьбы». . .
Оттачиваю умение писать js программы.
russiannick 30.08.2026
Проектом выходного дня стало написание Книги шифров Виженера. Итогом стала версия 200, синий туман. Синий туман назван так, потому что замораживает текст под собой. Нажатие синих кнопок управляют. . .
мат медиц модель 30. презентация проекта
anaschu 27.08.2026
хоп хоп хоп хидахоп, а я кладую))
Как у меня протекала болезнь
zorxor 27.08.2026
Здравствуйте, друзья! Эта запись блога предназначена именно для вас - для моих дорогих друзей, которые знали меня лично. Чтобы ответить на вопрос - а что же со мной произошло на самом деле? Я учился. . .
Нашел вот забавное видео о измерениях. Лучшее что я видел на эту тему
kumehtar 26.08.2026
ILETXiw9bMQ Основная суть и тезисы по измерениям: 0D (Нулевое измерение): точка, не имеющая длины, ширины, высоты или объема. Объект не может перемещаться в 0D. 1D (Первое измерение):. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru