如何在SQLite中插入新行(“\ n”)字符?

时间:2017-11-10 16:55:52

标签: c++ sqlite newline sql-insert

尝试插入类似的内容时

"Hello\nWorld"

SQLite会抛出类似的错误:

  

消息:无法识别的令牌:“'Hello”;“(还有其他一些错误)

即使我将上面的字符串转换为"Hello''\nWorld""Hello\"\n\"World",这些转义字符序列在这种情况下也不起作用。

目前使用C ++语言,我像其他任何简单的字符串列一样插入此列。我试过上面的转义序列(尽管我在网上看过,它们不适用于\n)。

如何在SQLite DB中插入新行和其他此类特殊字符?

2 个答案:

答案 0 :(得分:3)

在SQL中,没有机制来转义换行符;你必须按字面意思插入它们:

INSERT INTO MyTable VALUES('Hello
world');

或者,动态构造字符串:

INSERT INTO MyTable VALUES('Hello' || char(10) || 'world');

(换行符的类型(13或10或13 + 10)取决于操作系统。)

当您在C ++字符串中嵌入SQL语句时,您必须在第一种情况下转义换行符:

q1 = "INSERT INTO MyTable VALUES('Hello\nworld');";
q2 = "INSERT INTO MyTable VALUES('Hello' || char(10) || 'world');";

答案 1 :(得分:2)

特定于Qt

为了使Qn概括,我没有提到Qt。对于那些使用Qt的人来说,多行处理是在following way

中完成的
void InsertToDB (QString contents)
{
  contents.replace("\n", "<br>"); // ... rest will be taken care by Qt
  sqlite.insert<wherever>(contents);
}

注意:我们发现即使在Qt的文本框中输入<br>,也会插入一个新行!