【问题标题】:How to enclose a quotes around an integer c#?如何在整数c#周围加上引号?
【发布时间】:2018-06-21 15:27:44
【问题描述】:

我正在使用以下内容对文档数据库进行动态查询

 var i = saList[index];
 engagementFilter.Append($"f.keys.SelectedEngagementId  = {i}");

这会产生查询

(f.keys.SelectedEngagementId = f9721f2e-144d-40b9-b530-fcf067cab682 或 f.keys.SelectedEngagementId = f55dd402-9975-4c55-8486-6cb9c6330a66)

但我需要在 guid 周围加上引号,我该怎么做?

(f.keys.SelectedEngagementId = "f9721f2e-144d-40b9-b530-fcf067cab682" 或 f.keys.SelectedEngagementId = "f55dd402-9975-4c55-8486-6cb9c6330a66")

【问题讨论】:

  • 你不能转义双引号并像\"{i}\"一样添加它们吗?
  • 对不起,彼得,我投票决定重新开放,因为这是针对数据库的。在大多数平台上不仅仅是简单的转义(如参数化查询)。
  • @PatrickHofman:恕我直言,你这样做是不合适的。问题显然是关于转义引号,无论您是否认为 OP 需要不同的信息。而且,如果您真的认为这需要关于参数化查询的答案,那么 Stack Overflow 上有很多重复的那些类型的答案。这个问题没有得到很好的研究,不需要也不值得任何答案。
  • 我不确定是否有针对 Cosmos DB 的特定答案,但您是对的,有足够多的通用答案涵盖了这一点。如果你有一个好的,我会很乐意关闭它。 @PeterDuniho
  • @PatrickHofman:就我而言,与我最初用来结束问题的答案完全相同的事实是投票率最高和接受的答案是足以证明原始副本是最合适的。还有一些答案包括试图重定向冒着查询注入风险的人的答案,例如stackoverflow.com/questions/25015520/…,但最好留给 cmets,而不是实际上没有解决所提出的具体问题的答案。

标签: c# string azure-cosmosdb guid


【解决方案1】:

您应该改用参数化查询。这将保护您免受 SQL 注入,并改进数据库中的查询解析。

engagementFilter.Append($"f.keys.SelectedEngagementId  = @i{position}");

您将@i0 等添加到您的参数的位置。

documentation(参数化 SQL 查询部分)中阅读更多关于参数化查询的信息。

【讨论】:

    【解决方案2】:

    "f.keys.SelectedEngagementId = \"{i}\""@"f.keys.SelectedEngagementId = ""{i}"""

    【讨论】:

      【解决方案3】:

      您可以尝试使用\ 添加和转义它们:

      engagementFilter.Append($"f.keys.SelectedEngagementId  = \"{i}\"");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多