Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Програма находит лишний служебный символ


Автор: N1ko 2.7.2009, 23:25
 
Код

string comman = "INSERT INTO album VALUES('" + my[i].Name.ToString() + "')";


Это команда, которую я хочу выпонить.  my[i].Name.ToString() - название каталога. но проблема в том что встречаются каталоги в которых присутствует символ '(апостроф). В результате SQL воспринимает команду немного по другому чем задумывалось изначально. Он в коде видит 3 апострофа и соответственно воспринимает их как служебные. ЧТо делать? Всё перерыл, ответа не нашёл. Помогите плиз.

Автор: Экскалупатор 3.7.2009, 00:52

Цитата

Строковые (литералы)

Строковые литералы не ограничены по длине и могут содержать знаки ANSI или Юникода. Строковые литералы заключаются в одинарные кавычки. При использовании одинарных кавычек внутри строкового литерала применяйте два знака одинарных кавычек. Пустая строка представляется двумя последовательными знаками одинарных кавычек ('').


получается тебе нужно отследить, где у тебя появляется одинарная кавычка, и добавить туда еще одну.

p.s. хотя возможны варианты, разные базы по разному воспринимают и устраняют эту проблему и то что подойдет для SQL Server может не подойти для Oracle

Автор: PashaPash 3.7.2009, 14:11
N1ko, не вставляй my[i].Name.ToString() в строку запроса, передавай параметром, через command.Parameters.Add. 

Автор: N1ko 3.7.2009, 20:41
Спасибо большое. Оба метода успешно работают. А можно как то точно определить какой из них быстрее работает, что бы выбрать оптимальный вариант?

Автор: Partizan 3.7.2009, 20:59
N1ko, смысла особого нет...второй вариант просто более правильный.

Автор: N1ko 3.7.2009, 21:14
Ясно. Спасибо всем огромное. Тему закрываю. Ещё раз спс.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)