【问题标题】:string format and single quote字符串格式和单引号
【发布时间】:2019-01-28 06:05:30
【问题描述】:

我正在使用包含多行文本的字符串格式,并且一个单引号是该文本的一部分。代码就像

     string _query = @"{ts '{0}-{1}-{2} 00:00:00'}
                                 ";
              _query = string.Format(_query, DateTime.Now.Year, DateTime.Now.Month, 25);

但字符串格式返回异常为

  Input string was not in a correct format.

我们如何在多行文本中添加单引号以及字符串格式

【问题讨论】:

  • 使用参数化 SQL 查询。不要像上面那样构建查询。参数化 SQL 查询 = 没有 SQL 注入,并且字符串中的引号没有问题。
  • 必填bobby-tables.com链接
  • 看在 Pete 的份上,请不要使用隐式连接。它们已经过时了超过 25 年。
  • 同意 sql 可能不是最优的。但是请帮助找出字符串格式有什么问题
  • @JibinMathew 并不是说​​“sql 可能不是最优的”——而是 sql 非常糟糕。 SQL 注入的风险是一个非常大的风险,解决方案非常简单——太简单了以至于不能使用。顺便说一句,您的 string.format 可能以另一种方式出错 - 它会在 12 个月中的第 9 个月返回一个数字。您应该使用{0}-{1:00}-{2} 作为格式字符串。

标签: c# string string-formatting


【解决方案1】:

如 cmets 所述,请避免使用字符串构建查询,而应使用参数化 SQL 查询。

关于您对为什么字符串格式失败的评论,这是因为字符串的开头和结尾都存在花括号。您需要对其进行转义。要转义花括号,请使用“{{”和“}}”。

string _query = @"{{ts '{0}-{1}-{2} 00:00:00'}}";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2020-05-11
    • 1970-01-01
    • 2019-06-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-12
    相关资源
    最近更新 更多