С точки зрения инкапсуляции нет ничего плохого в том, что вы написали.
Однако, как намекал «Дэвид Б» (он немного об этом говорил), есть некоторые проблемы безопасности, о которых вам необходимо знать.
Динамический SQL, который вы генерируете, подвержен так называемой «атаке SQL-инъекцией». Представьте, например, что значением поля была следующая строка:
assortment_id] = 0 and assortment_id = 1
delete from assortment
select 1 from assortment where [assortment_id
это приведет к тому, что база данных выполнит 3 запроса:
- Пустой запрос на выборку, который не дал результатов
- Запрос на удаление, который удалял все в ассортиментной таблице
- запрос реального выбора
Это, очевидно, может вызвать некоторые проблемы.
Если значение "field" когда-либо указано с помощью:
- Поле интерфейса пользователя
- Отправка формы веб-страницы
- Из клиента веб-службы
- Загружен из файла на диске
- Или любым другим способом, кроме постоянного значения, указанного вами в коде
Затем вам нужно проверить данные, чтобы убедиться, что это допустимое значение поля, прежде чем выполнять какие-либо запросы. В противном случае вы уязвимы для атаки.