我正在尝试插入具有此字段的表
TITLE varchar(200) NOT NULL
下一句:
INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi \"Obrint Pas 2011\"", ...
问题是 SQLite 误解了 \" escape 字符,我不知道如何用它来解决我的 Android 程序中的问题(也许是字符代码?)。
只需从命令行使用 sqlite 和直接 sql 插入命令,我发现双引号会自行逃脱。 以你的例子
INSERT OR IGNORE INTO EXAMPLETABLE VALUES ("1-Preludi ""Obrint Pas 2011""", ...
要将值插入数据库,您应该始终使用SQLiteStatement(HowTo),因为它们会转义您的值并防止您的应用程序成为SQL注入的目标。
此外,如果您要插入多个值(例如在循环中),则执行具有不同绑定值的预编译语句比普通插入语句要快得多。
尝试类似的事情:
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);
用它来插入具有任何特殊字符的数据
ContentValues initialValues = new ContentValues();
initialValues.put("Id", id);
initialValues.put("Name", Name);
// ...
myDataBase.insert("EXAMPLETABLE", null, initialValues);
试试这个:
INSERT OR IGNORE INTO EXAMPLETABLE VALUES ('1-Preludi "Obrint Pas 2011"', ...
您应该使用
''
包围该值,然后在 ''
中,您可以使用双引号而不转义,如下所示,因此 '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""", ...