Не получается обновить информацию в базе данных SQLite

Пытаюсь обновить строку в базе данных по id, но вместо этого строка просто удаляется. Подскажите, пожалуйста, как это исправить

public class MainActivity extends AppCompatActivity implements View.OnClickListener{
    
        Button btnAdd, btnRead, btnClear, btnUpd, btnDel;
        EditText etName, etEmail, etId;
    
        DBHelper dbHelper;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
                        ................................................
    
            btnUpd = (Button) findViewById(R.id.btnUpd);
            btnUpd.setOnClickListener(this);
    
                        ................................................
    
            etName = (EditText) findViewById(R.id.etName);
            etEmail = (EditText) findViewById(R.id.etEmail);
            etId = (EditText) findViewById(R.id.etId);
    
            dbHelper = new DBHelper(this);
        }
    
        @Override
        public void onClick(View v) {
    
            String name = etName.getText().toString();
            String email = etEmail.getText().toString();
            String id = etId.getText().toString();
    
            SQLiteDatabase database = dbHelper.getWritableDatabase();
    
            ContentValues contentValues = new ContentValues();
    
    
            switch (v.getId()) {
    
                        ................................................
    
                case R.id.btnUpd:
                    if (id.equalsIgnoreCase("")){
                        break;
                    }
                    contentValues.put(DBHelper.KEY_MAIL, email);
                    contentValues.put(DBHelper.KEY_NAME, name);
                    int updCount = database.update(DBHelper.TABLE_CONTACTS, contentValues, DBHelper.KEY_ID + "= ?", new String[] {id});
    
                    Log.d("mLog", "updates rows count = " + updCount);
    
    
        case R.id.btnDel:
            if (id.equalsIgnoreCase("")){
                break;
            }
            int delCount = database.delete(DBHelper.TABLE_CONTACTS, DBHelper.KEY_ID + "=" + id, null);

            Log.d("mLog", "deleted rows count = " + delCount);
    
    
            }
            dbHelper.close();
        }
    }

Ответы (1 шт):

Автор решения: woesss

Конструкция switch работает следующим образом:

  • поочерёдно проверяются все кейсы на совпадение с ключом
  • после совпадения выполняется весь код вплоть до конца конструкции либо первого оператора прерывания (ака break, return, throw), включая код последующих кейсов

Из-за отсутствия оператора прерывания в конце case R.id.btnUpd: выполняются оба кейса - запись обновляется и тут же удаляется

→ Ссылка