Мой совет: я бы не стал этого делать. Помимо конкретных проблем, на которые указывали другие (внедрение SQL, забыл вернуться), у меня есть еще одна проблема: вы предполагаете, что все запросы будут хорошо вписываться в эту форму. Ограничения вашей функции включают в себя:
- Нет поддержки объединения нескольких таблиц.
- Нет поддержки для внутреннего выбора.
- Вы всегда выбираете все столбцы, используя
*
- плохая идея в целом. У вас нет поддержки выбора только некоторых столбцов.
- Нет поддержки для
GROUP BY
.
- Если вам нужны все строки, вам все равно нужно передать предложение where, например, «1 = 1».
- и т.д ...
Теперь вы можете расширить свою функцию, чтобы учесть эти другие возможности, но она станет более сложной, и вы просто получите собственный язык для создания SQL-запросов, но не похожий на SQL. Иногда хорошей идеей является создание собственного языка для доступа к базе данных SQL, но чаще всего это просто пустая трата вашего времени, и другим будет трудно понять ваш код. При возможности придерживайтесь стандартных библиотек и стандартных интерфейсов. Если вы хотите избежать использования SQL, вы можете вместо этого использовать Object-Relational Mapping (ORM).
Если вы хотите не использовать SQL в своем коде, попробуйте создать интерфейс, который фактически делает что-то специфическое для вашего приложения (getFriends, getPostsByUser), а не что-то слишком общее.