У меня проблема, когда я хочу заменить некоторые отдельные одинарные кавычки двойными кавычками внутри строки SQL, но не все одиночные кавычки в этой строке.Поиск конкретной отдельной цитаты и замена двойными кавычками в C#
EXEC procedureName 'param'eter1', 'parameter2'
В приведенном выше примере, я просто хочу, чтобы заменить одиночную кавычку внутри «param'eter1», но одиночные кавычек в начале и в конце параметра остается одинаковыми.
Используя команду ниже, замените все одиночные кавычки в строке, и это выглядит как «param''eter1», что неверно.
sometext.Replace("'", "''")
Я хочу, чтобы выглядеть следующим образом:
EXEC procedureName 'param''eter1', 'parameter2'
Также обрати внимание, что я уже знаю, что использование SqlParameter является лучшим решением для обработки одинарных кавычек в параметрах SQL, но из-за ограничения, в среде проекта я не могу это реализовать.
Update:
Изменение отдельных параметров, прежде чем использовать их, чтобы построить полный текст заявления не вариант для меня, как у меня нет доступа к этому коду. Мой проект работает как слой данных, где он получает строки SQL из других приложений для обработки.
Вы можете использовать регулярное выражение, которое соответствует '' 'не после пробела, а не перед пробелом/запятой. Но вам действительно нужно изменить архитектуру вашего проекта (или, по крайней мере, назвать имя службы, чтобы люди здесь не стали жертвами SqlInjection ...) – gdoron
Внесите изменения в отдельные параметры, прежде чем использовать их для постройте полное утверждение. – NineBerry