【问题标题】:Bizarre Escape Character Question奇怪的逃脱字符问题
【发布时间】:2010-04-28 14:24:33
【问题描述】:

我在 c# asp.net 页面的文字 <% %> 中嵌入了以下 c# 代码

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

这破坏了我的代码,因为它显然不能使用 \' 转义字符。为什么会这样? \" 等其他转义字符正在工作,那么为什么 \' 不工作?

【问题讨论】:

  • 我不知道你为什么认为你需要转义单引号。
  • 为什么需要转义 ' ?单引号不是 C# 字符串中的特殊字符。
  • 仅供参考:根据其他代码的情况,您很可能遇到了 SQL 注入问题。

标签: c# asp.net sqlcommand escaping


【解决方案1】:

如果您选择 " 作为字符串终止符,则序列 \" 是“有效的”。

如果您使用 @" 作为初始字符串终止符,则序列 \" 不会 转义引号(但 "" 会)。

所以 \" 不是“通用”转义序列,而 \' 不是。

【讨论】:

    【解决方案2】:

    您不需要转义单引号。但如果你这样做了,你总是可以尝试@方法。

    【讨论】:

      【解决方案3】:
      string commandString = "SELECT tblData.Content " +
                          "FROM tblData " +
                          "WHERE (tblData.ref = '%"+myCurrentREF+"%')";
      

      这是正确的方式,但不是 = 不代表喜欢?,或者你的字符串总是以 % 开头?

      【讨论】:

        猜你喜欢
        • 2011-07-27
        • 2012-08-21
        • 1970-01-01
        • 1970-01-01
        • 2018-07-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多