Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.57/21: Рейтинг темы: голосов - 21, средняя оценка - 4.57
18 / 13 / 5
Регистрация: 08.01.2016
Сообщений: 315

Как составить запрос на выборку

15.09.2021, 09:52. Показов 4680. Ответов 25
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Подскажите, пожалуйста, как можно решить следующий вопрос:
Имеется БД с таблицей:
id - name - surname - age - dateIn - estimation - regNumber

У меня есть код для выборки в БД MySQL:
C#
1
2
3
4
5
                System.Data.DataTable datatable = new DataTable();
                MySqlDataAdapter adapter = new MySqlDataAdapter();
                MySqlCommand command = new MySqlCommand("SELECT * FROM `student` WHERE `name` = @uName AND `surname` = @uSurname", db.getConnection());
                command.Parameters.Add("@uName ", MySqlDbType.VarChar).Value = name ;              
                command.Parameters.Add("@uSurname", MySqlDbType.UInt32).Value = surname;
Здесь я делаю выборку по имени и фамилии студента... А как написать код, если я заранее не знаю какую выборку будет использовать пользователь... Допустим, он может решить искать студента по имени и возрасту... Мне придется под это условие заранее предусмотреть новый запрос? Типо этого?

C#
1
2
3
4
5
                System.Data.DataTable datatable = new DataTable();
                MySqlDataAdapter adapter = new MySqlDataAdapter();
                MySqlCommand command = new MySqlCommand("SELECT * FROM `student` WHERE `name` = @uName AND `age` = @uAge", db.getConnection());
                command.Parameters.Add("@uName ", MySqlDbType.VarChar).Value = name ;              
                command.Parameters.Add("@uAge", MySqlDbType.UInt32).Value = age;
А если я предлагаю пользователю много вариантов поиска, мне нужно под каждый из вариантов новый запрос предусмотреть?
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
15.09.2021, 09:52
Ответы с готовыми решениями:

Как составить запрос SELECT на выборку из связанных таблиц
Всем привет. Вопрос простой, но вот уже три дня сижу пробую ничего не получается. Есть две связанные таблички в базе на ms access, есть...

Составить запрос на выборку
Есть у меня в программе 2 listbox. 1 - Список читателей, 2 должен вывести книг которых взял читатель , который мы выбрали в listbox1. ...

БД и sql - составить запрос на выборку данных из базы
добрый день. создаю приложение на c# и sql server 2005 и возникла одна небольшая проблема. Помогите пожалуйста составить запрос на выборку...

25
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
16.09.2021, 18:23
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Igr_ok Посмотреть сообщение
Я обычно пихаю reader в DataTable, а потом перебираю все свойства в классе в алфавитном порядке, чтобы ничего не пропустить, копируя название свойства в название поля
Но зачем, если можно в ридере обратиться к полю по имени, а не по индексу?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
16.09.2021, 18:45
Лучший ответ Сообщение было отмечено pincet как решение

Решение

Цитата Сообщение от Usaga Посмотреть сообщение
Но зачем, если можно в ридере обратиться к полю по имени, а не по индексу?
Перефразируя один анекдот
Кликните здесь для просмотра всего текста
Английский лорд после кораблекрушения очутился на необитаемом острове. Он построил три хижины. Через некоторое время его обнаружили и спасли. Моряки долго недоумевали, зачем ему три хижины? На что он ответил:
— Одна — это мой дом, вторая — это мой клуб, а третья — это клуб, который я игнорирую.
ридер- это класс, который я игнорирую. И это никак не связано с программированием
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
16.09.2021, 18:52
Igr_ok, так используйте Dapper) Тогда можно будет и DataTable игнорировать)
0
1497 / 1238 / 245
Регистрация: 04.04.2011
Сообщений: 4,363
16.09.2021, 18:59
Igr_ok, В приведенном решении мне больше всего понравилась идея выборки по узлу из "деревянной" таблицы на любом уровне. Функция UsF_GetFullTreePath(TN.TN_PID) выбирает всю цепочку до корня и выдает ее в виде
[id0]-[id1]-[id2]-.., где 0,1,2.. это уровни.
Например, 678-57-258 - список id узлов, куда входит "лист" с id=258.
Вот по этой строке и определяется принадлежность к поисковому группировочному объекту (континет - страна - город).
Т.к. они не могут иметь одинаковый id (ибо все они в одной таблице-дереве), то можно искать как по континенту, так и по стране или по городу.
Как бы простота плюс универсальность

Добавлено через 1 минуту
Цитата Сообщение от Igr_ok Посмотреть сообщение
ридер- это класс, который я игнорирую.
Кгхмм.. Коран не позволяет ?

Добавлено через 5 минут
Представьте ситуацию. Есть хранимка, которая возвращает 100500 записей. Ну устроена она так ! И переделать ее низзя. И вообще лазать на сервер с ногами тоже низзя ! Но нужно выбрать из этой кучи только 100 записей.
Вопрос: зачем писать в таблу все эту прорву, нещадно пожирая память и время, если можно этого не делать, просто сканируя однонаправленный "курсор", выбирая из него ту самую сотню записей ?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
17.09.2021, 08:58
Цитата Сообщение от Usaga Посмотреть сообщение
так используйте Dapper)
Я пользуюсь Xpo от DevExpress. Так можно игнорировать Dapper и EF.
Цитата Сообщение от MsGuns Посмотреть сообщение
Есть хранимка, которая возвращает 100500 записей...Но нужно выбрать из этой кучи только 100 записей.
Ситуация, конечно, надуманная, но да, тогда я воспользуюсь ридером. Я программист с замашками аристократа, а не идиот с замашками программиста
0
Эксперт .NET
 Аватар для Usaga
14789 / 9562 / 1367
Регистрация: 21.01.2016
Сообщений: 36,058
17.09.2021, 09:04
Цитата Сообщение от Igr_ok Посмотреть сообщение
Я программист с замашками аристократа, а не идиот с замашками программиста
Пожалуй, утащу эту фразу себе в коллекцию)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.09.2021, 09:04

Как правильно составить запрос на выборку
Здравствуйте, буду благодарен, если подскажете как сделать интересующую меня выборку в БД. В таблице есть поле категория, в которое...

Составить запрос на выборку
В общем есть таблица с новостями. Мне нужно выбрать новости дата у которых меньше текущей с лимитом в 20, И новости у которых дата больше...

Составить sql запрос на выборку
Есть таблица с такими столбиками sale_id, sale_kod, sale_name, sale_prise, sale_date, sale_point Мне нужно из них сформировать запрос...

Составить запрос к БД на выборку фильмов
есть таблица в БД "kino" 2 поля: название фильма "title" и актер играющий роль "actor" нужно выбрать все фильмы где играют роль...

Помогите составить запрос на выборку
Здравствуйте. Ребята,помогите пожалуйста. Есть пять таблиц: CREATE TABLE Customer ( CustNo INTEGER, FirstName VARCHAR2(20), ...


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

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