C++ C++;

C++ C++;,c++,sql,string,sqlite,escaping,C++,Sql,String,Sqlite,Escaping,我正在搜索一个简单的“addslashes”函数,寻找一个必须在sqlite数据库中保存一些信息的程序 谢谢。我想它的回声“\\hi” -ouput\hi与其尝试重新实现addslashes,不如考虑使用准备好的语句。SQLite提供了两个函数SQLite\u encode\u binary()和SQLite\u decode\u binary(),可用于存储和检索二进制数据 我建议使用准备好的语句和数据绑定来查询,这样您就不需要转义或使用像or这样的库来轻松地进行转义 Sqlite3使用SQL

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

谢谢。

我想它的
回声“\\hi”

-ouput\hi

与其尝试重新实现addslashes,不如考虑使用准备好的语句。SQLite提供了两个函数SQLite\u encode\u binary()和SQLite\u decode\u binary(),可用于存储和检索二进制数据

  • 我建议使用准备好的语句和数据绑定来查询,这样您就不需要转义或使用像or这样的库来轻松地进行转义
  • Sqlite3使用SQL标准quites,因此对于转义文本,您需要为blob“双引号”,您需要十六进制表示,即

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


  • 为什么不把字符串绑定到一个准备好的语句上呢?二进制数据是怎么说的?我说的是简单的文本。你的问题要更具体一些。“某些信息”听起来不像“简单文本”。注意,对于一些中国人来说简单的文本对我来说看起来很奇怪。如果未指定信息的编码,则最安全的方法是将其作为二进制进行威胁。一般来说,预处理语句的速度较慢。至少在posgres中(因为您无法使用表统计信息预先规划查询),请参阅以获得解释和示例。那么,我将得到更正。但它们仍然更简单、更容易、更好。