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

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

25.09.2022, 08:16. Показов 9671. Ответов 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
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
02.10.2022, 08:31
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от 123valik321 Посмотреть сообщение
Она вывалилась из-за того что локальный сервер упал
Упал и не отжался?
Надо попробовать чуть позже или обработать исключение, но вроде как решили пока без этого.

Цитата Сообщение от 123valik321 Посмотреть сообщение
C#
1
2
3
4
EmployeeRepository repository = new EmployeeRepository();
 Employee employee = repository.GetEmployee(login.Text, password.Text);
EmployeeRepository repository1 = new EmployeeRepository();
 Employee employee1 = repository1.GetAllEmployees(login.Text, password.Text);
Вы не разобрались.
Так не получится.
GetAllEmployees возвращает список сотрудников.
А вашего одного сотрудника надо найти уже в этом списке.

Добавлено через 36 минут
И смотрите, не попутайте credentials сервера с вашим logU.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
02.10.2022, 08:59  [ТС]
OwenGlendower,
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Не может такого быть. Это основы без изучения которых вам не могли дать подобное задание. Где вы учитесь?
могли, нас как обучают, дают задание написать код для решения задачи (причем одна и таже задача на разных языках программировния), вычислить двухмерную матрицу, сделать сортировку матрицы, а потом говорят вот вам индивидуальное задание написать программу по взлому пентагона, и ты такой: а что в смысле, как писать. А учусь я в техникуме, дают основы такие как писать самый простой код, а не то что я сейчас делаю
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Или хотя бы посмотрите на пример приведенный в сообщении #9. В классе Form1 вызывается метод GetEmployee. Сделайте по аналогии.
вот это сообщение я не видел
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Я не понял что вы хотели этим сказать.
ладно пропустим
Цитата Сообщение от OwenGlendower Посмотреть сообщение
1) Зачем после авторизации получать список всех сотрудников? Вы вроде хотели выводить его в Form2?
Так как это должность директора, то он должен видеть всех своих сотрудников, а также добавлять их
Цитата Сообщение от OwenGlendower Посмотреть сообщение
2) Выражение repository1.GetAllEmployees(login.Text, password.Text) должно было вам дать ошибку компиляции. Какую? Как вы её поняли?
Ни одна из перегрузок метода "GetAllEmployees()": не принимает 2 аргуметов
Цитата Сообщение от OwenGlendower Посмотреть сообщение
3) Какой тип возвращает GetAllEmployees?
немного не понял, но он должен возвращать такой же тип, как и GetEmployees
Цитата Сообщение от OwenGlendower Посмотреть сообщение
4) Сколько аргументов принимает метод GetAllEmployees?
2
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
02.10.2022, 09:19
Цитата Сообщение от 123valik321 Посмотреть сообщение
написать программу по взлому пентагона
хрен получится...

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

Добавлено через 2 минуты
Цитата Сообщение от 123valik321 Посмотреть сообщение
А учусь я в техникуме, дают основы такие как писать самый простой код, а не то что я сейчас делаю
В техникуме вы не напишите. Нужен университет.
А я сам учился на механику, но перевёлся на прикладную математику магистр, а программировать под окна учился самоучкой по учебникам и по документации.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
02.10.2022, 18:45  [ТС]
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
Вы не разобрались.
Так не получится.
GetAllEmployees возвращает список сотрудников.
А вашего одного сотрудника надо найти уже в этом списке.
и кажется без самого решения не разберусь, передать данные с класса на одну форму, а от туда на другую, сложно для меня
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
03.10.2022, 06:35
Цитата Сообщение от 123valik321 Посмотреть сообщение
и кажется без самого решения не разберусь, передать данные с класса на одну форму, а от туда на другую,
одна форма должна быть главной, подчинённая - модальной.
с главной на модальную - вызов формы с параметром
https://www.google.com/search?... араметрами
с модальной на главную - через свойство Parent
https://www.google.com/search?... %BE+Parent

Цитата Сообщение от 123valik321 Посмотреть сообщение
сложно для меня
это скверно.
1
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
03.10.2022, 08:43  [ТС]
Ludwig Valentin, спасибо конечно, но ничего не понял, и поэтому ничего не получилось
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
03.10.2022, 11:24
Цитата Сообщение от 123valik321 Посмотреть сообщение
спасибо конечно, но ничего не понял, и поэтому ничего не получилось
Смотрите примеры и сделайте по аналогии.
https://c-sharp.pro/%D0%B2%D0%... %80%D0%B0/
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
03.10.2022, 11:42
Цитата Сообщение от 123valik321 Посмотреть сообщение
Так как это должность директора, то он должен видеть всех своих сотрудников, а также добавлять их
Код который вы привели делает следующее:
1) Найти сотрудника по логину и паролю
2) Получить всех сотрудников
3) Если сотрудник из п.1 существует, то создать форму в соответствии с его должностью и показать её

То есть получаете список сотрудников независимо от должности. Это не имеет смысла согласитесь. Где этот список нужно получать? В обработчике события Load класса Form2 (это же форма для директора?).
C#
1
2
var repository = new EmployeeRepository();
dataGridView.DataSource = repository.GetAllEmployees();
И это будет всё. Проверять что это директор уже не нужно. Эта проверка уже была выполнена.

Цитата Сообщение от 123valik321 Посмотреть сообщение
немного не понял, но он должен возвращать такой же тип, как и GetEmployees
Мы такого метода не делали. У нас был метод GetEmployee и мы добавили к нему GetAllEmployees. Первый возвращает одного сотрудника, второй их список - т.е. List<Employee>

Цитата Сообщение от 123valik321 Посмотреть сообщение
2
Неправильно. Ноль аргументов у него.

Цитата Сообщение от 123valik321 Посмотреть сообщение
могли, нас как обучают, ...
Я думаю вам следует нанять себе репетитора.

Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
А вашего одного сотрудника надо найти уже в этом списке.
Какого сотрудника? Зачем?
1
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
03.10.2022, 12:01
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Цитата Сообщение от Ludwig Valentin Посмотреть сообщение
А вашего одного сотрудника надо найти уже в этом списке.
Какого сотрудника? Зачем?
Я думал, что GetAllEmployees() надо вызвать только один раз и загрузить в список, а конкретного сотрудника уже искать в этом списке. Или вы предлагаете тоже прочитать из базы данных отдельно?
Или на случай, что данные сотрудников отредактируются, надо вызывать каждый раз заново?
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
03.10.2022, 16:11
Ludwig Valentin, я пытаюсь разобраться какого сотрудника вы собираетесь искать исходя из той задачи которую решает ТС. Ему необходимо в форме для директора вывести список всех сотрудников. Для этого мы и реализовали метод GetAllEmployees(). Искать в этой коллекции никого не требуется - в моем понимании. Вы думаете иначе. Расскажите какого такого сотрудника вы собираетесь искать и по каким признакам?
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
04.10.2022, 05:35  [ТС]
OwenGlendower, Ludwig Valentin, Спасибо вам за помощь
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
04.10.2022, 07:07
Цитата Сообщение от OwenGlendower Посмотреть сообщение
Ludwig Valentin, я пытаюсь разобраться какого сотрудника вы собираетесь искать исходя из той задачи которую решает ТС. Ему необходимо в форме для директора вывести список всех сотрудников. Для этого мы и реализовали метод GetAllEmployees(). Искать в этой коллекции никого не требуется - в моем понимании. Вы думаете иначе. Расскажите какого такого сотрудника вы собираетесь искать и по каким признакам?
ОК, извиняюсь, немного запутался.
Для формы директора нам нужен список всех и всё.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
06.10.2022, 16:01  [ТС]
OwenGlendower, Здравствуйте, столкнулся с новой проблемой, не могу убрать этот столбец PositionId, как это можно сделать?

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
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using static System.Windows.Forms.VisualStyles.VisualStyleElement;
 
namespace Cafe_BK
{
    public partial class Form2 : Form
    {
        private object displayData;
        public Form2()
        {
            InitializeComponent();
            DisplayData();
        }
 
        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {
            dataGridView1.Columns["Positionid"].Visible = false;
        }
 
        public Form2(Employee employee)
        {
            InitializeComponent();
            label1.Text = employee.Surname + " " + employee.Name + " " + employee.Patronymic;
            var repository = new EmployeeRepository();
            dataGridView1.DataSource = repository.GetAllEmployees();
            //dataGridView1.DataSource = new List<Employee>() { employee };
            //dataGridView1.Columns[5].Visible = false;
            //dataGridView1.Columns[6].Visible = false;
        }
 
        private void button1_Click(object sender, EventArgs e)
        {
 
        }
 
        private void textBox1_TextChanged(object sender, EventArgs e)
        {
 
        }
 
        int ID = 0;
        MySqlConnection connection = new MySqlConnection("server=127.0.0.1;port=3306;username=root;password= ; database=BK");
        MySqlCommand command;
        MySqlDataAdapter adapter;
        private void button5_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && textBox5.Text != "" && textBox6.Text != "" && textBox7.Text != "")
            {
                command = new MySqlCommand("insert into sotruds(f, i, o, address, logU, passU, id_dolgnost) values(@f, @i, @o, @address, @logU, @passU, @id_dolgnost)", connection);
                connection.Open();
                command.Parameters.AddWithValue("@f", textBox1.Text);
                command.Parameters.AddWithValue("@i", textBox2.Text);
                command.Parameters.AddWithValue("@o", textBox3.Text);
                command.Parameters.AddWithValue("@address", textBox4.Text);
                command.Parameters.AddWithValue("@logU", textBox5.Text);
                command.Parameters.AddWithValue("@passU", textBox6.Text);
                command.Parameters.AddWithValue("@id_dolgnost", textBox7.Text);
                command.ExecuteNonQuery();
                connection.Close();
                MessageBox.Show("Запись вставлена успешно");
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Пожалуйста, предоставьте подробности!");
            }
        }
 
        private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
        {
            ID = Convert.ToInt32(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString());
            textBox1.Text = dataGridView1.Rows[e.RowIndex].Cells[1].Value.ToString();
            textBox2.Text = dataGridView1.Rows[e.RowIndex].Cells[2].Value.ToString();
            textBox3.Text = dataGridView1.Rows[e.RowIndex].Cells[3].Value.ToString();
            textBox4.Text = dataGridView1.Rows[e.RowIndex].Cells[4].Value.ToString();
            textBox5.Text = dataGridView1.Rows[e.RowIndex].Cells[5].Value.ToString();
            textBox6.Text = dataGridView1.Rows[e.RowIndex].Cells[6].Value.ToString();
 
        }
 
        private void DisplayData()
        {
            connection.Open();
            DataTable dt = new DataTable();
            adapter = new MySqlDataAdapter("select * from sotruds;", connection);
            adapter.Fill(dt);
            dataGridView1.DataSource = dt;
            connection.Close();
        }
        //Clear Data  
        private void ClearData()
        {
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
            textBox4.Text = "";
            textBox5.Text = "";
            textBox6.Text = "";
            textBox7.Text = "";
            ID = 0;
        } 
        
 
        private void Form2_Load(object sender, EventArgs e)
        {
 
        }
 
        private void button9_Click(object sender, EventArgs e)
        {
            if (textBox1.Text != "" && textBox2.Text != "" && textBox3.Text != "" && textBox4.Text != "" && textBox5.Text != "" && textBox6.Text != "" && textBox7.Text != "")
            {
                command = new MySqlCommand("update tbl_Record set Name=@name,State=@state where ID=@id", connection);
                connection.Open();
                command.Parameters.AddWithValue("@id", ID);
                command.Parameters.AddWithValue("@f", textBox1);
                command.Parameters.AddWithValue("@i", textBox2.Text);
                command.Parameters.AddWithValue("@o", textBox3.Text);
                command.Parameters.AddWithValue("@address", textBox4.Text);
                command.Parameters.AddWithValue("@logU", textBox5.Text);
                command.Parameters.AddWithValue("@passU", textBox6.Text);
                command.Parameters.AddWithValue("@id_dolgnost", textBox7.Text);
                command.ExecuteNonQuery();
                MessageBox.Show("Запись успешно обновлена");
                connection.Close();
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Пожалуйста, выберите запись для обновления");
            }
        }
    
 
        private void button6_Click(object sender, EventArgs e)
        {
            if (ID != 0)
            {
                command = new MySqlCommand("delete sotruds where ID=@id", connection);
                connection.Open();
                command.Parameters.AddWithValue("@id", ID);
                command.ExecuteNonQuery();
                connection.Close();
                MessageBox.Show("Запись удалена успешно!");
                DisplayData();
                ClearData();
            }
            else
            {
                MessageBox.Show("Пожалуйста, выберите запись для удаления");
            }
        }
    }
}
Employee
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
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Cafe_BK
{
    public enum PositionId
    {
        Position1 = 1,
        Position2 = 2,
        Position3 = 3,
        Position4 = 4,
        Position5 = 5,
        Position6 = 6
    }
 
    public sealed class Employee 
    {
        public int Id { get; }
        public string Surname { get; }
        public string Name { get; }
        public string Patronymic { get; }
        public string Address { get; }
        public string Login { get; }
        public int Password { get; }
        public PositionId PositionId { get; }
        public string Dolgnost { get; }
 
        public Employee(IDataReader dataReader)
        {
            Id = dataReader.GetInt32(dataReader.GetOrdinal("sotruds_id"));
            Surname = dataReader.GetString(dataReader.GetOrdinal("f"));
            Name = dataReader.GetString(dataReader.GetOrdinal("i"));
            Patronymic = dataReader.GetString(dataReader.GetOrdinal("o"));
            Address = dataReader.GetString(dataReader.GetOrdinal("address"));
            Login = dataReader.GetString(dataReader.GetOrdinal("logU"));
            Password = dataReader.GetInt32(dataReader.GetOrdinal("passU"));
            PositionId = (PositionId)dataReader.GetInt32(dataReader.GetOrdinal("dolgnosti_id"));
            Dolgnost = dataReader.GetString(dataReader.GetOrdinal("dolgnosti_name"));
        }
    }
}
EmployeeRepository
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static System.ComponentModel.Design.ObjectSelectorEditor;
 
namespace Cafe_BK
{
    public sealed class EmployeeRepository
    {
        const string ConnectionString = "server=127.0.0.1;port=3306;username=root;password= ; database=BK";
        public Employee? GetEmployee(string login, string password)
        {
            const string sql = @"
            SELECT
                sotruds.id AS sotruds_id,
                sotruds.f,
                sotruds.i,
                sotruds.o,
                sotruds.address,
                sotruds.logU,
                sotruds.passU,
                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();
                using (var dataReader = command.ExecuteReader())
                {
                    return dataReader.Read() ? new Employee(dataReader) : null;
                }
            }
        }
 
        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,
                sotruds.logU,
                sotruds.passU,
                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 форма
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
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)
        {
            EmployeeRepository repository = new EmployeeRepository();
            Employee employee = repository.GetEmployee(login.Text, password.Text);
 
            if (employee == null)
            {
                MessageBox.Show("вы не авторизованы");
            }
            else
            {
                var form = CreateForm(employee);
                if (form != null)
                {
                    form.Show();
                }
                else
                {
                    MessageBox.Show($"Неизвестный идентификатор должности '{employee.PositionId}'");
                }
            }
        }
 
        private static Form CreateForm(Employee employee)
        {
            switch (employee.PositionId)
            {
                case PositionId.Position1: return new Form2(employee);
                case PositionId.Position2: return new Form3(employee);
                case PositionId.Position3: return new Form4(employee);
                //case PositionId.Position4: return new Form5(employee);
                //case PositionId.Position5: return new Form6(employee);
                //case PositionId.Position6: return new Form7(employee);
            }
            return null;
        }
 
        private void button3_Click(object sender, EventArgs e)
        {
            Close();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
Мне надо не скрыть его, а убрать полностью
0
French monarch Élisée
 Аватар для Ludwig Valentin
171 / 290 / 26
Регистрация: 11.08.2022
Сообщений: 3,720
06.10.2022, 16:12
Цитата Сообщение от 123valik321 Посмотреть сообщение
Мне надо не скрыть его, а убрать полностью
Ширину слолбца Width = 0.
А само значение id нужно для апдейта.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
06.10.2022, 16:31
123valik321, попробуйте в Form2 поставить строку №28 после строки №36.
1
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,690
Записей в блоге: 4
06.10.2022, 16:51
Цитата Сообщение от 123valik321 Посмотреть сообщение
C#
1
dataGridView1.DataSource = repository.GetAllEmployees();
Да уж...
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
06.10.2022, 17:12  [ТС]
OwenGlendower,
Цитата Сообщение от 123valik321 Посмотреть сообщение
dataGridView1.Columns["Positionid"].Visible = false;
Эта строчка кода просто скрывает столбец, а данные остаются в памяти, и мешают при работе с таблицой (добавление, редактирование и удаление). Мне надо убрать столбец, чтобы данные от туда не мешали при работе с таблицой
0
 Аватар для Andrey-MSK
3386 / 2272 / 388
Регистрация: 14.08.2018
Сообщений: 7,690
Записей в блоге: 4
06.10.2022, 17:17
Цитата Сообщение от 123valik321 Посмотреть сообщение
и мешают при работе с таблицой
Именно эти данные и нужны для правильной работы с таблицей. Так как проще что-то удалить, изменить зная ID записи, а не искать по тексту.
0
Администратор
Эксперт .NET
 Аватар для OwenGlendower
18359 / 14289 / 5370
Регистрация: 17.03.2014
Сообщений: 28,968
Записей в блоге: 1
06.10.2022, 17:21
Цитата Сообщение от 123valik321 Посмотреть сообщение
данные остаются в памяти, и мешают при работе с таблицой (добавление, редактирование и удаление). Мне надо убрать столбец, чтобы данные от туда не мешали при работе с таблицой
Как именно он "мешает"?

Цитата Сообщение от Andrey-MSK Посмотреть сообщение
Да уж...
На всякий случай. ТС написал это по моему совету. Я понимаю что тянуть все данные плохо, но это только для начала.
0
0 / 0 / 0
Регистрация: 25.09.2021
Сообщений: 88
06.10.2022, 17:22  [ТС]
Andrey-MSK, хм, да вы правы, но тогда другой вопрос, как выводимые данные "Position1, Position2..." заменить на значение(id: 1, 2...) ?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
06.10.2022, 17:22

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
120
Ответ Создать тему
Новые блоги и статьи
Калькулятор для расчета родства
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