Вопрос о странном побеге - PullRequest
0 голосов
/ 28 апреля 2010

У меня есть следующий код c #, встроенный в литерал <% %> страницы c # asp.net

string commandString = "SELECT tblData.Content " +
                        "FROM tblData " +
                        "WHERE (tblData.ref = N\'%"+myCurrentREF+"%\')";

Это нарушает мой код, поскольку он, очевидно, не может использовать escape-символ \'. Почему это так? другие экранирующие символы, такие как \", работают, так почему же \' не работает?

Ответы [ 3 ]

1 голос
/ 28 апреля 2010

Последовательность \ "работает", если вы выберете "в качестве ограничителя строки.

Если бы вы использовали @ "в качестве начального конца строки, последовательность \" не не экранирует кавычку (но "" делает).

То есть \ "не является" универсальной "escape-последовательностью, а \ '- нет.

0 голосов
/ 28 апреля 2010
string commandString = "SELECT tblData.Content " +
                    "FROM tblData " +
                    "WHERE (tblData.ref = '%"+myCurrentREF+"%')";

Это правильный путь, но вместо = не имел в виду как?, Или ваша строка всегда начинается с%?

0 голосов
/ 28 апреля 2010

Вам не нужно избегать одинарных кавычек. но если вы это сделаете, вы всегда можете попробовать @ подход.

...