【问题标题】:Escaping string for SQL in C++在 C++ 中为 SQL 转义字符串
【发布时间】:2010-12-26 03:00:46
【问题描述】:

我正在为一个必须在 sqlite 数据库中保存一些信息的程序搜索一个简单的“addslashes”函数。

谢谢。

【问题讨论】:

  • 为什么不将您的字符串绑定到准备好的语句?

标签: c++ sql string sqlite escaping


【解决方案1】:

您应该考虑使用准备好的语句,而不是尝试重新实现 addlashes。它们更简单、更快、更容易。

【讨论】:

  • 准备好的语句一般来说比较慢。至少在 posgres 中(因为您无法使用表统计信息预先计划查询)请参阅 goo.gl/63QcR 以获取解释和示例。
  • 那么我是正确的。但它们仍然更简单、更容易、更好。
【解决方案2】:
  1. 我建议使用 prepared statement 和数据绑定来查询,这样您就不需要转义或使用像 CppDBSOCI 这样的库来轻松完成它
  2. Sqlite3 使用 SQL 标准相当,因此对于转义文本,您需要为 blob “双引号”,您需要十六进制表示,即

    C string: char const *s="I'm" -> SQL: 'I''m'
    C blob  : char s[2]={0xFF,0}  -> SQL: x'FF00'
    

    见:http://www.sqlite.org/lang_expr.html

【讨论】:

    【解决方案3】:

    我认为是echo " \\hi "; - 输出 \hi

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-18
      • 2016-03-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多