SQLD语法UPDATE上的错误

时间:2013-11-15 13:56:52

标签: android sqlite sql-update

我在SQLite数据库中有一个数据库Scheme:

CREATE TABLE AppRecord ( sno INTEGER PRIMARY KEY, version Text,fields Text, appname    Text, appid Text, status Text, displayDetails Text, id Text);

我正在尝试使用以下查询更新我的记录

UPDATE AppRecord SET version ="16",
fields = "[{"lbl":"user","type":"text","required":true},
    {"lbl":"age","max":100,"type":"text", "number":true, "required":true,     "maxPrecision":2},
    {"lbl":"address","type":"text", "multiline":true},
    {"lbl":"date","type":"date","minDate":"3","maxDate":"3","required":true}]",
    appname = "Sales", 
    appid = "sales",
    status = "modified",
    id = "52860e0d012bad414cc98162" 
    WHERE appid = "sales";

每当我尝试这样做时,它会给我一个语法错误说:

ERROR android.database.sqlite.SQLiteException: near "lbl": syntax error (code 1)

我尽力弄清楚错误,但我无法解决。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

您尝试将"引号中的字符串值括起来fields,但该值还包含"引号。

转义"的SQL方法是将其加倍为""

sqlite> create table foo(bar);
sqlite> insert into foo values("string with ""quotes"" embedded");
sqlite> select * from foo;
string with "quotes" embedded

更好的方法是使用parameter substitution

在Android Java API中,这可以使用execSQL()bindArgs参数,或者更方便地使用update() ContentValues whereArg进行更新查询}对构造的更新查询的WHERE部分执行相同的替换。)