sqlite异常:没有这样的列

xzlaal3s  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(319)

大家好,我有一个更新表查询…但我收到一个错误,说没有这样的列这是我的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
rdrgkggo

rdrgkggo1#

出现此错误是因为您试图用字符串/文本更新列的值,但未提供正确的格式。
您必须在jsonarraystring的两边单引号(')才能被识别为文本值。在sql查询中,应该始终使用单引号将文本值括起来。
具体来说:“[{“id”:206406,“name”:“1”,“author”:“1”}]”
不过,硬编码查询是一种不好的做法,您应该始终避免。您的查询易受sql注入攻击。这可以通过绑定参数轻松避免。
例如,可以使用sqlitedatabase的update方法代替execsql。

oo7oh9g9

oo7oh9g92#

尝试增加数据库版本。如果它是1,就做2

private static final int DATABASE_VERSION = 1;

相关问题