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

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

25.09.2022, 08:16. Показов 9656. Ответов 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
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
25.09.2022, 12:51
Цитата Сообщение от 123valik321 Посмотреть сообщение
Он в каждой последующей строчке это выдает
То есть я убрал строчку с "f", потом запустил, теперь ошибка в "i"
Извините, что вмешиваюсь.
Сначала отладьте запрос в консоли MySQL, а потом зашивайте его в коде C#.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 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
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 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
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
25.09.2022, 20:41
123valik321, простите за прямоту, но что это за детский сад? В классе Employee есть ФИО: Surname, Name и Patronymic. Так трудно заменить employee.Login на строку собранную из этих свойств?
1
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
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
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
26.09.2022, 08:16
Цитата Сообщение от 123valik321 Посмотреть сообщение
Я делал, имена полей можно и изменить, а вот написать код в ограниченное время, чтобы он работал как надо, нет
Вам нужен системный подход.
Будьте немного аккуратнее и всё у вас получится.
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
26.09.2022, 08:16  [ТС]
OwenGlendower,
Извините пожалуйста, но вопрос, а в dataGridView как вывести данные о пользователе? Я попробую что-то сделать но не уверен что получится, ибо с такой структурой написания кода, которую вы скинули, я мало работал, и как объединить с таблицей не знаю.
0
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
26.09.2022, 08:26
Цитата Сообщение от 123valik321 Посмотреть сообщение
а в dataGridView как вывести данные о пользователе?
Я отвечу.
Добавить данные о пользователе в SQL-запрос.
Если надо включать данные из другой таблицы, то JOIN.
https://www.w3schools.com/mysql/mysql_join.asp
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
26.09.2022, 08:34
Лучший ответ Сообщение было отмечено 123valik321 как решение

Решение

Цитата Сообщение от 123valik321 Посмотреть сообщение
а в dataGridView как вывести данные о пользователе?
Об одном пользователе? Элементарно
C#
1
dataGridView.DataSource = new List<Employee>() { employee };
1
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
26.09.2022, 08:46
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Об одном пользователе? Элементарно
А нужны ещё, наверное, заголовки полей в таблице и по русски. А это можно сделать только вручную.
1
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 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
18358 / 14288 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 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
Valechka-Думай о Высоком
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,716
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
Ответ Создать тему
Новые блоги и статьи
По какой причине рабочий алгоритм может называться бредом?
Hrethgir 05.08.2026
3 мая мной была сделана публикация на Хабре авторского алгоритма итеративного обхода дерева "эстафета хвоста". Удаление публикации видимо произошло из-за отзывов об алгоритме такого рода Ну, я тебе. . .
Кредитный калькулятор
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
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru