如何正确地转义一个SQLite数据库的单引号?
我试图从头开始创build一个新的SQLite数据库,为我的新表(只有一个到目前为止),以及在一个文件中的表的INSERT语句。
然后我进入sqlite3,并尝试创build数据库,如下所示:
$ sqlite3 newdatabase.db SQLite version 3.4.0 Enter ".help" for instructions sqlite> .read ./schema.sql SQL error near line 16: near "s": syntax error
我的文件的第16行看起来像这样:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there\'s');
所以问题有一个单引号转义字符,但我不明白为什么这是行不通的。 我已经试过双引号(使用\\而不是\\),但是这也不起作用。
我在这里做错了什么?
尝试加倍单引号。 许多数据库都期望这样。 所以会是的
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');
编辑 :由于这个问题似乎得到了很多的stream量,这里有一些相关的有用的链接。
文档: http : //www.sqlite.org/lang_expr.html
文档中的相关引用:
string常量是通过将string括在单引号(')中形成的。 string中的单引号可以通过将两个单引号放在一行中进行编码 – 就像在Pascal中一样。 不支持使用反斜杠字符的C样式转义,因为它们不是标准的SQL。 BLOB文字是包含hex数据的string文字,前面是单个“x”或“X”字符。 …字面值也可以是标记“NULL”。
我相信你会想通过加倍单引号来逃避:
INSERT INTO table_name (field1, field2) VALUES (123, 'Hello there''s');