Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.89/18: Рейтинг темы: голосов - 18, средняя оценка - 4.89
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148

SQL запросы, чем плоха конкатенация SQL запроса?

20.11.2014, 00:49. Показов 3505. Ответов 3
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Опишу ситуацию, есть БД с несколькими таблицами, с которыми нужно совершать много разных операций при разных условиях. Операции стандартные, но имена таблиц и критерии поиска часто разные.

Я создал класс с несколькими типовыми процедурами, в которые передаю параметры запроса.
Простой пример запроса:
SQL
1
SELECT Id FROM tblMain WHERE Name = 'Aaa'
, этот запрос формируется так:
C#
1
"SELECT " + "Id" + " FROM " + "tblMain" + " WHERE " + "Name" + " = " + Name
Такой один запрос я могу использовать практически для любых выборок из разных таблиц, вплоть до увеличения количества условий, просто передавая разные строковые параметры в процедуру, в которой выполняется запрос.

Если бы я использовал параметризованные запросы, то пришлось бы перегружать и создавать кучу новых методов.

Возможно хуже читаемость запросов, но размер кода существенно меньше, чем плоха конкатенация SQL запроса помимо уязвимости SQL injection?

Думал попробовать Linq, но не нашел пока особого смысла, Linq to DataSet - надо сначала получать объекты DataTable, а потом из них уже делать выборку, но так как данные в таблицах часто меняются - придется постоянно поддерживать DataTable обновленными... Linq to SQL - база данных SQLite и для работы с Linq нужно создавать для каждой таблице по классу с атрибутами [DataTable] и [DataColumn], насколько я понял.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
20.11.2014, 00:49
Ответы с готовыми решениями:

SQL запросы
Нужен совет.Пишу курсовую в которой будет БД. Стоит ли подробно изучать язык SQL и учится писать запросы на сервере ?И какими запросами...

Sql запросы
У меня есть таблица техники "Техника" (id, name, price , diller, description) и есть таблица "Покупатель" (id, name). Как сделать...

SQL запросы
Помогите составить правильные скл запросы Запрос первый: На поиск даты: тип datetime( год - месяц - число - час - минута) Есть...

3
158 / 187 / 48
Регистрация: 25.11.2013
Сообщений: 978
20.11.2014, 00:49
1. Тем, что макароны
2. Количество операций программы должно быть ограничено
0
8 / 8 / 2
Регистрация: 10.12.2013
Сообщений: 148
20.11.2014, 01:22  [ТС]
Цитата Сообщение от DataPlanner Посмотреть сообщение
Количество операций программы должно быть ограничено
Программа - бюджетов доходов и расходов, с пользователями, центрами затрат, статьями и субстатьями, планом по статьям и фактом по статьям, так что тут не ограничится)
0
4217 / 3059 / 583
Регистрация: 21.01.2011
Сообщений: 13,203
20.11.2014, 10:06
Цитата Сообщение от AleksyVB Посмотреть сообщение
чем плоха конкатенация SQL запроса
Видимо зависит от СУБД.
Скажу на примере Oracle. Там есть кэш запросов, в который помещаются те запросы, которые уже использовались. Если приходит очередной запрос, то сначала он ищется в кэше и если такой найден, то он повторно используется. При этом экономится время на разбор запроса и построение плана выполнения (при большом числе запросов это м.б. весьма существенно).
Если мы формируем запрос динамически (dynamic SQL, по твоей терминологии - "конкатенация SQL"), то такой запрос повторно не используется, т.е. производительность сервера БД ухудшается. Поэтому в Oracle рекомендуется использовать dynamic SQL по минимуму, там, где без него просто не обойтись.
То же самое касается применение параметров в части WHERE вместо литералов.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.11.2014, 10:06
Помогаю со студенческими работами здесь

SQL-запросы
Подскажите, когда в проекте есть datagridview, в котором отображается информации из базы данных, и мне надо сделать, чтобы пользователь мог...

Bindingsource. Sql запросы
Здравствуйте уважаемые профессионалы. Вопрос совсем простой у меня. Есть база данных Access, подключенная к приложению с помощью...

SQL запросы в WinForms
помогите с синтаксисом не пойму почему эта строка не прокатывает sqlcommand.CommandText = "INSERT INTO web_address...

SQL запросы к Access
Здравствуйте, бяда с запросом на добавление string SQLUpdateString; SQLUpdateString = "INSERT INTO Предметы (Название)...

DataSet и Sql - запросы
Здраствуйте Хотелось бы узнать можно ли как- то делать sql - запросы к DataSet.Если да то как?


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru