Экранирование SQL-запросов - поддержка различных платформ баз данных в .Net - PullRequest
1 голос
/ 02 июня 2009

Существует ли .Net проект / dll, который поддерживает экранирование предоставленного пользователем ввода для запросов к базе данных для различных систем баз данных?

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

В идеале я хотел бы указать систему базы данных (oracle, SqlServer, mySql и т. Д.) В файле конфигурации и иметь возможность вызывать Escape (variableName), и он будет экранировать содержимое строки на основе текущей настройки базы файл web.config.

Если нет, то следующей лучшей вещью будет что-то вроде EscapeForOracle, EscapeForSqlServer и т. Д.

Как минимум, проект должен поддерживать Oracle, SqlServer и MySql.

Мне интересно, нужно ли мне создавать это собственными силами или для этого существует существующий коммерческий продукт с открытым исходным кодом.

Ответы [ 2 ]

2 голосов
/ 02 июня 2009

Не думаю, что вам понадобится такая вещь.

При запуске параметризованного запроса / хранимой процедуры используйте коллекцию параметров.
Укажите соответствующий тип данных, длину, точность и укажите правильное значение.
Экранирование будет выполняться поставщиком БД.

Дайте мне знать, если я не правильно понял ваш вопрос.

0 голосов
/ 02 июня 2009

В .NET вы можете использовать универсальные классы, такие как DbReader и DbConnection вместо SqlConnection. Как сказал Шахкалпеш и Лассе В. Карлсен, вы можете использовать параметры, и фреймворк или драйвер будут обрабатывать переход для вас.

Но, на самом деле, если вы хотите разработать продукт для Oracle и Sql Server, вы говорите о ОСНОВНЫХ затратах. Сбежать правильно - это только верхушка айсберга. Если вы не установили тестовый сервер Oracle и Sql Server, вы, вероятно, даже не запустили:)

...