Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7

MySQL select двойные условия

02.09.2019, 07:44. Показов 2153. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго утра господа.
Подскажите пожалуйста как выполнить запрос с двойным условием?
Есть база, и нужно прочитать если твоё имя встречается в поле executor и client
Что делаю я

C#
1
2
3
4
5
6
7
8
9
10
MySqlDataReader rdr_db;
 using (MySqlCommand cmd_db = new MySqlCommand("Select * from tasks WHERE client='" + name + "'", GetConnection()))
               
                {
                    rdr_db = cmd_db.ExecuteReader();
                    while (rdr_db.Read())
                    {
                          //Читаю всё ок  rdr_db[i].ToString();
                     }
                 }
Потом нужно считать только другой запрос
C#
1
"Select * from tasks WHERE executor='" + name + "'", GetConnection()
Делаю аналогично как написано выше.

Вопрос. Как сделать запрос в одну строку?
Пробовал оператор OR, но он не помогает, вообще не считывает ничего
Делал так
C#
1
"Select * from tasks WHERE client='" + name + "' OR executor='" + name + "'" , GetConnection()
Зачем это нужно? потому что потом подсвечиваю сетку.
И полный код выглядит как записка наркомана.
Письмо наркомана. Не смотреть всем!
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
var name = DataGetSet.UserName;
            this.listTask.Items.Clear();
            db_connection DBCON = new db_connection();
            try
            {
 
                using (cmd_db = new MySqlCommand("Select * from tasks WHERE client='" + name + "'", DBCON.GetConnection()))
               
                {
                    rdr_db = cmd_db.ExecuteReader();
                    int a = 0;
                    while (rdr_db.Read())
                    {
                        
                        ListViewItem item = new ListViewItem(new string[] {
                        rdr_db[0].ToString(),
                        rdr_db[1].ToString(),
                        rdr_db[2].ToString(),
                        rdr_db[3].ToString(),
                        rdr_db[4].ToString(),
                        rdr_db[5].ToString(),
                        rdr_db[6].ToString(),
                        rdr_db[7].ToString(),
                        rdr_db[8].ToString(),
                        rdr_db[10].ToString()
 
                    });
 
                        if (item == listTask.FindItemWithText("Выдан") && item.ForeColor != Color.Red)
                        { item.BackColor = LightGrey;}
 
                        else if (item == listTask.FindItemWithText("Принято", true, a) && item.ForeColor != PowderBlue)
                        { item.BackColor = PowderBlue; }
 
                        else if (item == listTask.FindItemWithText("В работе", true, a) && item.ForeColor != LightGreen)
                        { item.BackColor = LightGreen; }
 
                        else if (item == listTask.FindItemWithText("Исправлено", true, a) && item.ForeColor != Gold)
                        { item.BackColor = Gold; }
 
                        else if (item == listTask.FindItemWithText("Выполнено", true, a) && item.ForeColor != Color.Snow)
                        { item.BackColor = DarkGreen; item.ForeColor = Color.Snow; }
 
                        else if (item == listTask.FindItemWithText("ПРИОСТАНОВЛЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = SaddleBrown; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ПРОСРОЧЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = Crimson; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ОШИБОЧНО", true, a) && item.ForeColor != Crimson)
                        { item.ForeColor = Crimson; }
                        a++;
                    }
                }
 
                using (cmd_db = new MySqlCommand("Select * from tasks WHERE gip='" + name + "'", DBCON.GetConnection()))
                {
                    rdr_db = cmd_db.ExecuteReader();
                    while (rdr_db.Read())
                    {
                        int a = 0;
                        ListViewItem item = new ListViewItem(new string[] {
                        rdr_db[0].ToString(),
                        rdr_db[1].ToString(),
                        rdr_db[2].ToString(),
                        rdr_db[3].ToString(),
                        rdr_db[4].ToString(),
                        rdr_db[5].ToString(),
                        rdr_db[6].ToString(),
                        rdr_db[7].ToString(),
                        rdr_db[8].ToString(),
                        rdr_db[10].ToString()
 
                    });
 
                        if (item == listTask.FindItemWithText("Выдан") && item.ForeColor != Color.Red)
                        { item.BackColor = LightGrey; }
 
 
                        else if (item == listTask.FindItemWithText("Принято", true, a) && item.ForeColor != PowderBlue)
                        { item.BackColor = PowderBlue; }
 
                        else if (item == listTask.FindItemWithText("В работе", true, a) && item.ForeColor != LightGreen)
                        { item.BackColor = LightGreen; }
 
                        else if (item == listTask.FindItemWithText("Исправлено", true, a) && item.ForeColor != Gold)
                        { item.BackColor = Gold; }
 
                        else if (item == listTask.FindItemWithText("Выполнено", true, a) && item.ForeColor != Color.Snow)
                        { item.BackColor = DarkGreen; item.ForeColor = Color.Snow; }
 
                        else if (item == listTask.FindItemWithText("ПРИОСТАНОВЛЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = SaddleBrown; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ПРОСРОЧЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = Crimson; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ОШИБОЧНО", true, a) && item.ForeColor != Crimson)
                        { item.ForeColor = Crimson; }
                        a++;
                    }
                }
 
               using (cmd_db = new MySqlCommand("Select * from tasks WHERE executor='" + name + "'", DBCON.GetConnection()))
                {
                    rdr_db = cmd_db.ExecuteReader();
                    while (rdr_db.Read())
                    {
                        int a = 0;
                        ListViewItem item = listTask.Items.Add(rdr_db[0].ToString());
                        for (int i = 0; i < 10; i++)
                        {
 
                            item.SubItems.Add(rdr_db[i + 1].ToString());
 
                        }
 
                        if (item == listTask.FindItemWithText("Выдан") && item.ForeColor != Color.Red)
                        { item.BackColor = LightGrey; }
 
 
                        else if (item == listTask.FindItemWithText("Принято", true, a) && item.ForeColor != PowderBlue)
                        { item.BackColor = PowderBlue; }
 
                        else if (item == listTask.FindItemWithText("В работе", true, a) && item.ForeColor != LightGreen)
                        { item.BackColor = LightGreen; }
 
                        else if (item == listTask.FindItemWithText("Исправлено", true, a) && item.ForeColor != Gold)
                        { item.BackColor = Gold; }
 
                        else if (item == listTask.FindItemWithText("Выполнено", true, a) && item.ForeColor != Color.Snow)
                        { item.BackColor = DarkGreen; item.ForeColor = Color.Snow; }
 
                        else if (item == listTask.FindItemWithText("ПРИОСТАНОВЛЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = SaddleBrown; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ПРОСРОЧЕНО", true, a) && item.ForeColor != Color.White)
                        { item.BackColor = Crimson; item.ForeColor = Color.White; }
 
                        else if (item == listTask.FindItemWithText("ОШИБОЧНО", true, a) && item.ForeColor != Crimson)
                        { item.ForeColor = Crimson; }
 
 
                        a++;
                    }
                }
               
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message.ToString(), "error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                logging.Write(ex);
            }
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
02.09.2019, 07:44
Ответы с готовыми решениями:

Двойные запросы к БД MySQL
подскажите пожалуйста почему это происходит... private void button1_Click(object sender, EventArgs e) { ...

Запрос Select к MySQL
Всем добрый вечер , такое дело, есть заполненная база с кодами ошибок (Синего экрана смерти). На форме есть TextBox в который мы вводим код...

Двойные условия
Ребят, у меня возникла маленькая проблемка. Если я хочу добавить двойное условие, что и главное как правильно мне это прописать? В идеале,...

6
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
02.09.2019, 07:56
Лучший ответ Сообщение было отмечено anomal6 как решение

Решение

Вот это безумно плохо:

Цитата Сообщение от anomal6 Посмотреть сообщение
rdr_db[0].ToString(),
rdr_db[1].ToString(),
rdr_db[2].ToString(),
rdr_db[3].ToString(),
rdr_db[4].ToString(),
rdr_db[5].ToString(),
rdr_db[6].ToString(),
rdr_db[7].ToString(),
rdr_db[8].ToString(),
rdr_db[10].ToString()
Супер хрупкий и нечитаемый код. Заведите класс под данные из базы и воспользуйтесь библиотечкой Dapper для отражения результатов выборки на этот класс.

Вот это тоже плохо:
Select * from tasks WHERE client='" + name + "' OR executor='" + name + "'" , GetConnection()

Никогда не используйте конкатенацию для передачи параметров в запросы. Для этого есть параметризованные запросы. Их Dapper тоже поддерживает.
1
95 / 62 / 22
Регистрация: 11.03.2013
Сообщений: 608
Записей в блоге: 7
02.09.2019, 08:14  [ТС]
Цитата Сообщение от Usaga Посмотреть сообщение
Никогда не используйте конкатенацию для передачи параметров в запросы. Для этого есть параметризованные запросы
Usaga дайте пожалуйста пример.
Прямые передачи от клиента до сервера я уберу. Хочу использовать WCF но пока изучение идёт потихоньку.
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
02.09.2019, 08:29
anomal6, посмотрите по ссылке, что я выше привёл. Dapper умеет в параметризованные запросы.

Запросы собранные конкатенацией плохи потому:
1) Что уязвимы к SQL-инъекциям. Представьте, что в name пользователь ввёл SQL-запрос.
2) Что работают немного медленнее, ибо СУБД придётся такие запросы каждый раз заново компилировать, а не взять прошлый из кеша и просто подставить параметры.

Цитата Сообщение от anomal6 Посмотреть сообщение
Прямые передачи от клиента до сервера я уберу. Хочу использовать WCF но пока изучение идёт потихоньку.
Если за WCF останется такой же бардак, то советы остаются в силе)
1
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
03.09.2019, 10:57
Цитата Сообщение от Usaga Посмотреть сообщение
Запросы собранные конкатенацией плохи потому:
1) Что уязвимы к SQL-инъекциям. Представьте, что в name пользователь ввёл SQL-запрос.
2) Что работают немного медленнее, ибо СУБД придётся такие запросы каждый раз заново компилировать, а не взять прошлый из кеша и просто подставить параметры.
1) - в целом да, но вредителю еще и и права нужно иметь, например на 'drpop database' или на таблицу важную с бизнес-данными. Однако, это уже другая история, ибо как правило, граждане, пишущие такие запросы орудуют от sa
0
Эксперт .NET
 Аватар для Usaga
14313 / 9393 / 1355
Регистрация: 21.01.2016
Сообщений: 35,425
03.09.2019, 11:39
pincet, да вот DROP\TRUNCATE не самое страшное, на самом деле. Из бекапа можно восстановиться. А вот кража данных уже хуже. Мало того, что не замеченным может остаться (в сравнении с DROP), так ещё и пользователи потом предъявить могут.
0
 Аватар для pincet
1655 / 1154 / 173
Регистрация: 23.07.2010
Сообщений: 6,910
03.09.2019, 13:22
Usaga,
я это все прекрасно понимаю.
Цитата Сообщение от pincet Посмотреть сообщение
Однако, это уже другая история, ибо как правило, граждане, пишущие такие запросы орудуют от sa
Добавлено через 3 минуты
https://www.youtube.com/watch?v=gcOXSSfODQc
вместо "цели" - подставить "понимание"

Добавлено через 2 минуты
у нас чтобы получить доступ на чтение к таблицам ERP - нихеровую такую служебку нарисовать нужно с обоснованиями
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.09.2019, 13:22
Помогаю со студенческими работами здесь

qt crator автоматические двойные скобки, кавычки (одинарные и двойные) (Желательно как в eclipse)
Можно организовать нечто подобное?

Задачки на условия If и Select Case
Ребят решите кто - нибудь задачки: 1)Определить являеться ли треугольник равнобедренным! Со сторонами a, b , c ! ...

3начение выбранного select и условия к нему
Приветствую вас! Помогите, пожалуйста, со скриптом. 1. Нужно из select'a выдрать значение выбранной опции. 2. 3атем применить...

Как задать правильное условия SELECT WHERE при выборке из БД
Есть команда: Dim SQL_COM As String = &quot;SELECT * FROM `dogovor`, `klient`, `uslugi` WHERE (dogovor.id = '&quot; &amp; Me.Tag &amp; &quot;')and(klient.did = ...

Двойные клики мыши во всех браузерах, так же если браузер запущен двойные клики происходят во всей ОС
Так же сам по себе открывается explorer


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной почты. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru