Вопросы
Одна из проблем, с которой вы столкнулись, заключается в том, что вы не запрашиваете никаких изменений.
Кроме того, вы всегда предполагаете, что строка или строки всегда были обновлены, т.е. вы не проверяете, были ли выполнены какие-либо обновления.
- Метод SQliteDatabase update возвращает целое число с количеством обновленных строк. Если ни один из них не обновлен, он вернет 0.
Объяснение
Учтите, что goalDate равно 2019-01-01 и goalWeight равно 100 и currentWeight равно 200 , тогда вы говорите
- обновление
- goalDate до 2019-01-01 и
- goalWeight до 100 и
- текущий вес до 200
- для строки (й) , где
- goalDate is 2019-01-01 и
- goalWeight is 100 и
- currentWeight is 200
Fix
Вместо: -
public boolean updateData(String goalDate, String goalWeight, String currentWeight){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
String where = "GDATE = ? AND GWEIGHT = ? AND CWEIGHT = ?";
contentValues.put(Col2, goalDate);
contentValues.put(Col3, goalWeight);
contentValues.put(Col4, currentWeight);
db.update(TABLE_NAME, contentValues, where, new String[]{goalDate,goalWeight,currentWeight});
return true;
}
То, что вы хотите, это что-то вроде: -
public boolean updateData(String goalDate, String goalWeight, String currentWeight, String newGoaldate, String newGoalWeight, String newCurrentWeight){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
String where = "GDATE = ? AND GWEIGHT = ? AND CWEIGHT = ?";
contentValues.put(Col2, newGoalDate);
contentValues.put(Col3, newGoalWeight);
contentValues.put(Col4, newCurrentWeight);
if (db.update(TABLE_NAME, contentValues, where, new String[]{goalDate,goalWeight,currentWeight}) > 0) {
return true;
}
return false;
}
- Первые 3 параметра - это исходные значения (используются для поиска строки, подлежащей обновлению), второй набор - значения, которые будут использоваться для обновления найденной строки или строк).
Extra
В идеале вы также должны изменить: -
String where = "GDATE = ? AND GWEIGHT = ? AND CWEIGHT = ?";
до: -
String where = Col2 + "=? AND " + Col3 + "=? AND " + Col4 +"=?";