Android SQLi更新表没有返回

问题描述 投票:0回答:1
  • 首次插入数据时有效
  • 但是当我更新查询时,它[[不起作用
这是我要执行的代码。

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)"

我感到困惑和尝试,但不理解
android sqlite kotlin android-sqlite
1个回答
0
投票
mData对象包含要替换旧值的3列的新值。因此,mData.userId包含表中不存在的新userId。这使WHERE语句的UPDATE子句成为方法update()的3d参数:"${DatabaseConstan.USER_ID}=${mData.userId}"不返回任何内容。

因此,而不是${mData.userId},您必须使用该列的原始值,该原始值必须保存在诸如currentId的变量中并更改为:

"${DatabaseConstan.USER_ID}=$currentId}"

© www.soinside.com 2019 - 2024. All rights reserved.