【发布时间】:2021-05-16 10:24:06
【问题描述】:
我只想更新我的 Rooms 数据库表中的特定列,并且正在使用 Android Rooms 的目标实体类。但是,当我执行该函数时,表中的值不会更新。下面是这个update函数的activity类代码、dao接口、我的飞行类、repository和view model代码。
**Activity class**
flightViewModel.getAllFlights().observe(FlightDescriptionActivity.this, new Observer<List<Flight>>() {
@Override
public void onChanged(List<Flight> flights) {
CateringTime cateringTime = new CateringTime("End",currentTime,currentTime,"These are catering comments");
flightViewModel.updateCateringData(cateringTime);
}
});
**FlightDao interface**
@Update(entity = Flight.class)
public void updateCateringData(CateringTime... cateringTimes);
**Flight Class**
class CateringTime {
//catering
private String catering_button_status;
private String catering_start_time;
private String catering_end_time;
private String catering_comments;
//primary keys
String flightNumber;
String date;
public CateringTime(String catering_button_status, String catering_start_time, String catering_end_time, String catering_comments) {
this.catering_button_status = catering_button_status;
this.catering_start_time = catering_start_time;
this.catering_end_time = catering_end_time;
this.catering_comments = catering_comments;
}
**Flight repository class**
public void updateCateringData(CateringTime... cateringTimes){
new UpdateCateringDataAsyncTask(flightDao).execute(cateringTimes);
}
private static class UpdateCateringDataAsyncTask extends AsyncTask<CateringTime, Void, Void> {
private FlightDao flightDao;
private UpdateCateringDataAsyncTask(FlightDao flightDao) {
this.flightDao = flightDao;
}
@Override
protected Void doInBackground(CateringTime... cateringTimes) {
flightDao.updateCateringData(cateringTimes);
return null;
}
}
}
**Flight View Model class**
public void updateCateringData(CateringTime... cateringTimes) {
repository.updateCateringData(cateringTimes);
}
我哪里出错了?
【问题讨论】:
标签: android sql-update android-sqlite android-room android-database