大家好,我有一个更新表查询…但我收到一个错误,说没有这样的列这是我的java代码:
sqLiteDatabase.execSQL("UPDATE "+TABLE_CONTACTS +" SET booksAmanat = " +jsonArrayString+ " WHERE
PersonId="+contact.getId());
数据库中存在列,这是错误:
android.database.sqlite.SQLiteException: no such column: {"id":206406,"name":"1","author":"1"}
(code 1): , while compiling: UPDATE tbl_contacts SET PersonId =
[{"id":206406,"name":"1","author":"1"}] WHERE PersonId=9984744
2条答案
按热度按时间rdrgkggo1#
出现此错误是因为您试图用字符串/文本更新列的值,但未提供正确的格式。
您必须在jsonarraystring的两边单引号(')才能被识别为文本值。在sql查询中,应该始终使用单引号将文本值括起来。
具体来说:“[{“id”:206406,“name”:“1”,“author”:“1”}]”
不过,硬编码查询是一种不好的做法,您应该始终避免。您的查询易受sql注入攻击。这可以通过绑定参数轻松避免。
例如,可以使用sqlitedatabase的update方法代替execsql。
oo7oh9g92#
尝试增加数据库版本。如果它是1,就做2