В ADO.NET вы можете добавить параметры к объекту команды, чтобы безопасно добавить пользовательский ввод в запрос SQL. Что эквивалентно для других предикатов, общих для SQL-запроса?
Я пишу программу, которая по сути является очень ограниченным O-R mapper и генератором SQL (она сосредоточена вокруг базы данных с метаинформацией и других баз данных, которые соответствуют этим метаданным). В результате я должен быть в состоянии вызвать вещи как:
string sql = "select " + USER_SELECTED_COLUMNS +
" from " + USER_SELECTED_TABLE +
" where " + USER_CRITERIA;
Некоторые из них (например, criteria
) буквально вводятся в мою программу доверенными пользователями (другими разработчиками в моей компании), в то время как другие данные вводятся в мою программу ненадежными пользователями (клиентами) посредством их поиска и т. Д.
Я бы хотел сделать эту программу защищенной, и я знаю, что вышесказанное - нет. В настоящее время у меня USER_SELECTED_COLUMNS
заменены на параметры команды, но я не смог найти эквивалент для CRITERIA и TABLE. (Или порядок-по столбцам). Существуют ли какие-либо функции ADO.NET, подобные SqlParameter
, которые я могу использовать для предикатов без выбора?