如何在 SQLite 数据库 Varchar 字段中插入双引号 ( " )?

问题描述 投票:0回答:6

我正在尝试插入具有此字段的表

TITLE varchar(200) NOT NULL
下一句:

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi \"Obrint Pas 2011\"", ... 

问题是 SQLite 误解了 \" escape 字符,我不知道如何用它来解决我的 Android 程序中的问题(也许是字符代码?)。

android database sqlite sql-insert double-quotes
6个回答
17
投票

只需从命令行使用 sqlite 和直接 sql 插入命令,我发现双引号会自行逃脱。 以你的例子

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi ""Obrint Pas 2011""", ...

3
投票

要将值插入数据库,您应该始终使用SQLiteStatementHowTo),因为它们会转义您的值并防止您的应用程序成为SQL注入的目标。

此外,如果您要插入多个值(例如在循环中),则执行具有不同绑定值的预编译语句比普通插入语句要快得多。


2
投票

尝试类似的事情:

ContentValues values = new ContentValues();
values.put("YOURCOLUMNNAME", "1-Preludi \"Obrint Pas 2011\"");
// ... other stuff you want to insert ...
SQLiteDatabase db = ... ; // Usually obtained using a SQLiteOpenHelper
long id = db.insertWithOnConflict("EXAMPLETABLE", BaseColumns._ID, values, SQLiteDatabase.CONFLICT_IGNORE);

2
投票

用它来插入具有任何特殊字符的数据

ContentValues initialValues = new ContentValues();
initialValues.put("Id", id);
initialValues.put("Name", Name);
// ...
myDataBase.insert("EXAMPLETABLE", null, initialValues);

1
投票

试试这个:

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ('1-Preludi "Obrint Pas 2011"', ... 

0
投票

您应该使用

''
包围该值,然后在
''
中,您可以使用双引号而不转义,如下所示,因此 '1-Preludi "Obrint Pas 2011"' 被评估为
1-Preludi "Obrint Pas 2011"
:

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ('1-Preludi "Obrint Pas 2011"', ... 

此外,不能使用双引号将值括起来,如下所示,因为会出现错误:

INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi ""Obrint Pas 2011""", ... 
© www.soinside.com 2019 - 2024. All rights reserved.