如何在SQLite Database Varchar字段中插入双引号(“)?

p3rjfoxz  于 2023-10-23  发布在  SQLite
关注(0)|答案(6)|浏览(167)

我试图插入到一个表与此字段TITLE varchar(200) NOT NULL下一句话:

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

问题是SQLite误解了\”转义字符,我不知道如何把它解决这个问题(也许是一个字符代码?)在我的Android程序中。

r3i60tvu

r3i60tvu1#

在使用sqlite和直接从命令行执行sql insert命令时,我发现双引号本身会转义。以你为榜样

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

lyfkaqu12#

要将值插入到数据库中,您应该始终使用SQLiteStatementHowTo),因为它们会转义您的值,并防止您的应用成为SQL-Injections的目标。
此外,如果你插入多个值(比如在一个循环中),执行一个带有不同绑定值的预编译语句比普通的insert语句快得多。

khbbv19g

khbbv19g3#

尝试类似的东西:

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);
qfe3c7zg

qfe3c7zg4#

使用此功能插入带有任何特殊字符的数据

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

yebdmbv45#

试试这个:

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

cs7cruho6#

您应该使用''将值括起来,然后在''之间,您可以使用双引号而不转义,如下所示,因此'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""", ...

相关问题