更新sqlite数据库时出现语法错误

时间:2012-07-04 08:29:02

标签: android sqlite

我正在尝试使用此更新我的数据库。

String dd = "1-PC CHICKEN & RICE";
SQLiteDatabase db2 = openOrCreateDatabase("order",MODE_PRIVATE,null);
ContentValues values = new ContentValues();
values.put("Description",(((TextView) findViewById(R.id.etoriginal)).getText().toString()));
db1.update("list", values, "Description ="+ dd ,null);

但是我的日志猫中出现了这个错误

07-04 16:20:00.659: E/AndroidRuntime(21504): android.database.sqlite.SQLiteException: near "CHICKEN": syntax error: , while compiling: UPDATE list SET Image=? WHERE Description =1-PC CHICKEN & RICE

我无法弄清楚是什么导致了这个

2 个答案:

答案 0 :(得分:0)

您需要转义dd的值,而不是直接在查询中嵌入它。试试这个:

db1.update("list", values, "Description = ?", new String[] { dd });

如dbaseman所说,将dd包含在引号中也适用于此特定情况,但如果dd恰好包含引号字符本身("1-PC FROGS' LEGS"),则会失败。正如我在这里所做的那样,将它作为一个单独的参数提供,通常更安全,更有效。

答案 1 :(得分:0)

您需要将条件包装在引号中:

db1.update("list", values, "Description ='" + dd + "'", null);