by Guest » 12 Feb 2025, 07:25
Ich versuche
update ein booleanes Array in der Android -Raum -Datenbank, aber es bringt diesen Fehler
aus
Code: Select all
E/SQLiteLog: (1) near "?": syntax error in "UPDATE alarm_table SET mDaysOfWeekArr=?,?,?,?,?,?,?,? WHERE mAlarmId=?"
Query:(Alarmdao.java)
Code: Select all
@TypeConverters({Converter.class})
@Query("UPDATE alarm_table SET mDaysOfWeekArr=:daysOfWeekArr WHERE mAlarmId=:alarmId")
void updateRecAlarmStatus(Boolean[] daysOfWeekArr, int alarmId);
< /code>
Beim Einfügen /Lesen des booleschen Array Die richtigen Werte werden in DB gespeichert (mit Abfrage) < /strong> < /p>
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(AlarmEntity alarmEntity);
< /code>
Raum -DB -Repository (alarmrepository.java) < /p>
public void updateRecAlarmStatus(final Boolean[] daysOfWeekArr, final int alarmId) {
databaseWriteExecutor.execute(new Runnable() {
@Override
public void run() {
alarmDao.updateRecAlarmStatus(daysOfWeekArr, alarmId);
}
});
}
< /code>
Aufrufen der obigen Funktion mit Onclick von Recyclerview und Lesen von Daten von Entität mit Geters und Änderung der Werte in boolean [] < /p>
daysOfWeek[1] = true;
daysOfWeek[5] = true
ar.updateRecAlarmStatus(daysOfWeekArr, alarmId);
< /code>
Entitätsklasse: (Alarmentity.java) < /p>
@Entity(tableName = "alarm_table")
public class AlarmEntity {
// ID used to disable / enable / delete alarms
@PrimaryKey
private int mAlarmId;
// Trigger time for alarm
private long mAlarmTime;
private boolean mAlarmEnabled;
@TypeConverters({Converter.class})
private Boolean[] mDaysOfWeekArr;
......
...... }
< /code>
TypeConverter < /p>
public class Converter {
// Used by AlarmEntity Boolean[] mDaysOfWeek
@TypeConverter
public static Boolean[] fromString(String value) {
Type listType = new TypeToken() {
}.getType();
Log.e("Converter: ", "fromString Called");
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromBoolean(Boolean[] list) {
Gson gson = new Gson();
Log.e("Converter: ", "fromString Called");
return gson.toJson(list);
}
}
Ich habe zum ersten Mal auf Stackoverflow gefragt. Bitte fragen Sie, ob weitere Informationen/Code erforderlich sind.
Bearbeiten: < /strong>
Nach dem Abnehmen eines Alarmentitätsobjekts von DB und Änderung der Werte
kann ich die Änderungen mit inbuilt @Update Query speichern
Aber diese Abfrage funktioniert nicht ... Ich bin sicher unten gesetzt mdaysofweekarr =: DaysofWeekarr < /code>
ist falsch, aber ich weiß nicht, wie ich es beheben soll < /p>
Code: Select all
@TypeConverters({Converter.class})
@Query("UPDATE alarm_table SET mDaysOfWeekArr=:daysOfWeekArr WHERE mAlarmId=:alarmId")
void updateRecAlarmStatus(Boolean[] daysOfWeekArr, int alarmId);
Ich versuche [b] update [/b] ein booleanes Array in der Android -Raum -Datenbank, aber es bringt diesen Fehler
aus[code]E/SQLiteLog: (1) near "?": syntax error in "UPDATE alarm_table SET mDaysOfWeekArr=?,?,?,?,?,?,?,? WHERE mAlarmId=?"[/code]
Query:(Alarmdao.java)
[code] @TypeConverters({Converter.class})
@Query("UPDATE alarm_table SET mDaysOfWeekArr=:daysOfWeekArr WHERE mAlarmId=:alarmId")
void updateRecAlarmStatus(Boolean[] daysOfWeekArr, int alarmId);
< /code>
Beim Einfügen /Lesen des booleschen Array Die richtigen Werte werden in DB gespeichert (mit Abfrage) < /strong> < /p>
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insert(AlarmEntity alarmEntity);
< /code>
Raum -DB -Repository (alarmrepository.java) < /p>
public void updateRecAlarmStatus(final Boolean[] daysOfWeekArr, final int alarmId) {
databaseWriteExecutor.execute(new Runnable() {
@Override
public void run() {
alarmDao.updateRecAlarmStatus(daysOfWeekArr, alarmId);
}
});
}
< /code>
Aufrufen der obigen Funktion mit Onclick von Recyclerview und Lesen von Daten von Entität mit Geters und Änderung der Werte in boolean [] < /p>
daysOfWeek[1] = true;
daysOfWeek[5] = true
ar.updateRecAlarmStatus(daysOfWeekArr, alarmId);
< /code>
Entitätsklasse: (Alarmentity.java) < /p>
@Entity(tableName = "alarm_table")
public class AlarmEntity {
// ID used to disable / enable / delete alarms
@PrimaryKey
private int mAlarmId;
// Trigger time for alarm
private long mAlarmTime;
private boolean mAlarmEnabled;
@TypeConverters({Converter.class})
private Boolean[] mDaysOfWeekArr;
......
...... }
< /code>
TypeConverter < /p>
public class Converter {
// Used by AlarmEntity Boolean[] mDaysOfWeek
@TypeConverter
public static Boolean[] fromString(String value) {
Type listType = new TypeToken() {
}.getType();
Log.e("Converter: ", "fromString Called");
return new Gson().fromJson(value, listType);
}
@TypeConverter
public static String fromBoolean(Boolean[] list) {
Gson gson = new Gson();
Log.e("Converter: ", "fromString Called");
return gson.toJson(list);
}
}
[/code]
Ich habe zum ersten Mal auf Stackoverflow gefragt. Bitte fragen Sie, ob weitere Informationen/Code erforderlich sind.
Bearbeiten: < /strong>
Nach dem Abnehmen eines Alarmentitätsobjekts von DB und Änderung der Werte
kann ich die Änderungen mit inbuilt @Update Query speichern
Aber diese Abfrage funktioniert nicht ... Ich bin sicher unten gesetzt mdaysofweekarr =: DaysofWeekarr < /code>
ist falsch, aber ich weiß nicht, wie ich es beheben soll < /p>
[code] @TypeConverters({Converter.class})
@Query("UPDATE alarm_table SET mDaysOfWeekArr=:daysOfWeekArr WHERE mAlarmId=:alarmId")
void updateRecAlarmStatus(Boolean[] daysOfWeekArr, int alarmId);
[/code]