我编写了以下查询,它在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();
2条答案
按热度按时间wfveoks01#
API 28中使用的SQLite版本是3.22.0(检查this thread),但是常量
true
和false
分别作为1
和0
的别名引入version 3.23.0中的SQLite。在语句中,必须将
isFiled
更改为整数1
或0
,isFiled
将返回true
或false
:但是,将参数连接到SQL语句总是一个坏主意。
应该使用方法
update()
,其中使用?
占位符传递参数。xj3cbfub2#
也许问题出在您的清单中,您有读写权限?
查看是否在此版本中创建了数据库。
GL语言