我想使用自制的占位符语法在我的C ++程序中动态创建SQL语句。但是,有一些特殊的SQL特定或SQLite3特定的字符,我不应该使用它们。你能帮我写一个这样的清单吗?我的目标是找到一个不能出现在SQL语句中的字符。我主要使用SQLite3,但将来可能会改变。
这是我到目前为止所发现的:
可能的候选人包括:
答案 0 :(得分:2)
所有字符都可以出现在字符串文字中。
答案 1 :(得分:0)
SQL语句中允许哪些结构部分是DBMS / dialect特定的;对于SQLite来说,一个很好的起点就在这里:http://www.sqlite.org/lang_expr.html
如果DB,表或字段名称包含特殊字符,则它们必须为escaped/quoted,之前CL已经解决了字符串文字,其余为keywords,运算符,数值和有效指示符(名称和函数),仅限于ASCII字符集的子集。所以其他一切都是无效的,但如果您的SQL方言将反斜杠定义为(非标准)运算符,则它是有效的。