Я работаю с SQLite Android, и у меня ошибка, когда я пытаюсь обновить таблицу во второй раз, и я понятия не имею, что не так с моим кодом. Первое обновление работает нормально.Android SQLite - второе обновление всегда возвращается 0
Кто-нибудь, пожалуйста, скажите мне, что я делаю неправильно? Заранее спасибо.
Это функция я использую, чтобы обновить таблицу:
public boolean updateEvents(int id, boolean shown){
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(EVENTS_COLUMN_SHOWN, shown);
int result = db.update(EVENTS_TABLE_NAME, contentValues, EVENTS_COLUMN_ID_EVENTS + " = ?", new String[]{Integer.toString(id)});
Log.d(DBHelper.class.getSimpleName(),"update result: "+result);
return result==1;
}
Я называю эту функцию после окончания doInBackground() в классе AsyncTask. Это класс, который вызывает эту функцию обновления:
private class GetEvents extends AsyncTask<Void,Void,Events>{
private DBHelper dbHelper;
@Override
protected Events doInBackground(Void... voids) {
try{
if(new Connection().GetEvents() && Settings.events.size()>0){
dbHelper = new DBHelper(FirstActivity.this);
for(int i=0; i<Settings.events.size(); i++){
dbHelper.recordEvents(Settings.events.get(i),dbHelper.isEventsShown(Settings.events.get(i).id_event));
}
for(int a=0; a<Settings.events.size(); a++){
boolean shown = dbHelper.isEventsShown(Settings.events.get(a).id_event);
Log.d(FirstActivity.class.getSimpleName(),"shown "+a+": "+shown);
if(Settings.events.get(a).isEnabled() && Settings.events.get(a).isEventValid() && !shown){
return Settings.events.get(a);
}
}
}
}catch (Exception e){
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Events events) {
if(events!=null){
dbHelper.updateEvents(events.id_event, true);
showPopUp(events);
}
super.onPostExecute(events);
}
}
Не могли бы вы объяснить, что и как ваше возвращение работает в updateEvents? – Thealon
Вы проверили, соответствует ли event.id_event для первого и второго обновления? – dora
@Thealon работает, если db.update возвращает 1 и мою таблицу событий с указанным событием event_id. Он работает в первом обновлении, он возвращает 1, а моя таблица обновляется. но второе обновление не удается, мои данные не меняются. –