Android API 28 -崩溃报告=异常为:android.database.sqlite.SQLiteException

piok6c0g  于 2023-01-24  发布在  Android
关注(0)|答案(2)|浏览(174)

我编写了以下查询,它在Api 29和30上运行良好,但应用程序在Api 28上崩溃,只有以下日志System.out:crash_report =异常为:android.database.sqlite.SQLiteException:无此列:真(代码1 SQLITE_ERROR):,编译时:更新医生集is_rogspFiled = true where doctor_contactid = 784829这是我的查询。我需要更改什么?

query = " update " + TABLE_DOCTOR + " set " + Queryclass.DOCTOR_ROGSP_STATUS + " = " + isFiled + " where " + Queryclass.DOCTOR_CONTACTID + " = " + gspid ;
    cursor = sd.getData(query);

    if (cursor.moveToNext()) {
        isFiled = true;
        ContentValues contentValues = new ContentValues();
        contentValues.put(Queryclass.DOCTOR_ROGSP_STATUS, isFiled);
        sd.update(Queryclass.TABLE_DOCTOR, contentValues, query);
    }

    cursor.close();
    sd.close();
wfveoks0

wfveoks01#

API 28中使用的SQLite版本是3.22.0(检查this thread),但是常量truefalse分别作为10的别名引入version 3.23.0中的SQLite。
在语句中,必须将isFiled更改为整数10isFiled将返回truefalse

query = "update " + TABLE_DOCTOR + " set " +
        Queryclass.DOCTOR_ROGSP_STATUS + " = " + (isFiled ? 1 : 0) + 
        " where " + Queryclass.DOCTOR_CONTACTID + " = " + gspid;

但是,将参数连接到SQL语句总是一个坏主意。
应该使用方法update(),其中使用?占位符传递参数。

xj3cbfub

xj3cbfub2#

也许问题出在您的清单中,您有读写权限?
查看是否在此版本中创建了数据库。
GL语言

相关问题