fun updateData(mData: Data) {
if (!databaseOpen) {
database = INSTANCE.writableDatabase
databaseOpen = true
}
val values = ContentValues()
values.put(DatabaseConstan.USER_ID, mData.userId)
values.put(DatabaseConstan.ABOUT, mData.userInfo.about)
values.put(DatabaseConstan.ADDRESS, mData.userInfo.address)
return database.update(DatabaseConstan.DATABASE_TABEL, values, "${DatabaseConstan.USER_ID}=${mData.userId}", null);
但是此方法有效
return database.execSQL("UPDATE data SET userId=${mData.userId} WHERE id='1'");
这里是创建表命令
val QUERY_CREATE = "CREATE TABLE $DATABASE_TABEL ($ROW_ID INTEGER PRIMARY KEY AUTOINCREMENT, $USER_ID INTEGER , $ABOUT TEXT)"
我感到困惑和尝试,但不理解
mData
对象包含要替换旧值的3列的新值。因此,mData.userId
包含表中不存在的新userId
。这使WHERE
语句的UPDATE
子句成为方法update()
的3d参数:"${DatabaseConstan.USER_ID}=${mData.userId}"
不返回任何内容。因此,而不是${mData.userId}
,您必须使用该列的原始值,该原始值必须保存在诸如currentId
的变量中并更改为:
"${DatabaseConstan.USER_ID}=$currentId}"