|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
17.04.2015, 06:29 | #1 |
Пользователь
Регистрация: 26.01.2010
Сообщений: 24
|
Вопрос к знатокам SQL
Имеется таблица Данные с полем Раздел, содержащее строки вида "!С!".
Надо заменить их на строки вида "С". Использую запрос (простой или параметризированный) sql= string.Format("UPDATE Данные SET Данные.Раздел = '{0}' WHERE (Данные.Раздел='{1}')", @newRazdel, @Razdel); Здесь Razdel- это !С!, а newRazdel - это С. С - это одиночный символ. Все заменяется нормально, пока не встречается строка с Razdel = "!'!". Выдается окно с ошибками. Снимок окна из облака почему-то не показывается. Там ошибка такая: Лишняя скобка ) в выражении запроса '''' WHERE (Данные.Раздел='!'!')'. Знатоки, подскажите, пожалуйста, как сделать эту замену. Может, в языке SQL есть неизвестные мне возможности для обработки таких строк? А может нужно использовать какие-то другие способы? Последний раз редактировалось АлМазСофт; 17.04.2015 в 06:37. Причина: Не показывается IMG |
17.04.2015, 06:48 | #2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Ты запросы параметризировать умеешь?
I'm learning to live...
|
|
17.04.2015, 07:02 | #3 |
Пользователь
Регистрация: 26.01.2010
Сообщений: 24
|
Использую запрос (простой или параметризированный)
Результат одинаков |
17.04.2015, 08:11 | #4 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Точно параметризированный используете? Код покажите. Конкатенация строк и String.Format это не параметризированный запрос.
http://en.wikipedia.org/wiki/Prepare...t#C.23_ADO.NET Более того, так не стоит делать делать никогда, ибо злой-редиска пользователь может таким образом выполнить произвольный SQL код, это называется SQL инъекция.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. Последний раз редактировалось Alex11223; 17.04.2015 в 08:17. |
17.04.2015, 08:22 | #5 |
Пользователь
Регистрация: 26.01.2010
Сообщений: 24
|
Вот один из моих вариантов:
string sql = string.Format("UPDATE Данные SET Данные.Раздел = '{0}' WHERE (Данные.Раздел='{1}' AND Данные.Код={2})", @newRazdel , @Razdel, kod); Код:
Последний раз редактировалось Stilet; 17.04.2015 в 09:37. |
17.04.2015, 08:25 | #6 | |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Ну вот и я говорю
Цитата:
Смотрите пример по ссылке выше.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
|
17.04.2015, 09:39 | #7 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
17.04.2015, 09:55 | #8 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Неа, он просто путает @ в самой строке с параметрами запроса и @ перед именем переменной.
Второе это для использования зарезервированных слов в качестве имени переменной Код:
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
17.04.2015, 10:05 | #9 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
А я думал собачка только перед константной строкой ставится...
I'm learning to live...
|
17.04.2015, 10:21 | #10 |
Пользователь
Регистрация: 26.01.2010
Сообщений: 24
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Вопрос к знатокам:) | Kevin K | Свободное общение | 2 | 05.07.2013 23:02 |
Вопрос знатокам) | Fireprophet | PHP | 1 | 16.05.2011 21:16 |
Вопрос к знатокам | mishapts | Мультимедиа в Delphi | 5 | 27.03.2011 23:05 |
вопрос знатокам | Exo | Microsoft Office Excel | 1 | 29.01.2008 17:01 |
вопрос к знатокам | Taras | Общие вопросы Delphi | 1 | 28.11.2006 14:46 |