0

次の c# コード<% %>を ac# asp.net ページのリテラルに埋め込んでいます。

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

\'どうやらエスケープ文字を使用できないため、これは私のコードを壊しています。なぜそうなのですか?のような他のエスケープ文字\"が機能しているのに、なぜ機能しないの\'ですか?

4

3 に答える 3

1

文字列ターミネータとして " を選択した場合、シーケンス \" は「機能」します。

@" を最初の文字列ターミネータとして使用する場合、シーケンス \" は引用符をエスケープしません(しかし "" はエスケープします)。

したがって、\" は「普遍的な」エスケープ シーケンスではなく、\' はありません。

于 2010-04-28T14:30:28.550 に答える
0

一重引用符をエスケープする必要はありません。ただし、そうする場合は、いつでも @ アプローチを試すことができます。

于 2010-04-28T14:30:11.687 に答える
0
string commandString = "SELECT tblData.Content " +
                    "FROM tblData " +
                    "WHERE (tblData.ref = '%"+myCurrentREF+"%')";

これは正しい方法ですが、= の代わりに like? を意味しないか、文字列を常に %? で開始します。

于 2010-04-28T14:34:49.480 に答える