Как удалить от 5 до 10 записей в sqlite в Android? - PullRequest
0 голосов
/ 24 июня 2019

Как я могу удалить записи с 5 до 10?

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

SQLiteDatabase db = dbHandler.getWritableDatabase();

for (int i = 5; i <= 10; i++) {
    db.delete(DbHandler.TABLE_USERS, i+"", null);
}
db.close();

Ответы [ 3 ]

2 голосов
/ 24 июня 2019

То, что действительно делает ваш цикл, таково:

db.delete(DbHandler.TABLE_USERS, 5+"", null);
db.delete(DbHandler.TABLE_USERS, 6+"", null);
db.delete(DbHandler.TABLE_USERS, 7+"", null);
db.delete(DbHandler.TABLE_USERS, 8+"", null);
db.delete(DbHandler.TABLE_USERS, 9+"", null);
db.delete(DbHandler.TABLE_USERS, 10+"", null);

что эквивалентно скажем для первого:

delete from DbHandler.TABLE_USERS WHERE '5'

Этот WHERE '5' интерпретируется SQLite как WHERE true, поэтому он удаляет все строки, и все последующие итерации делают то же самое, но строк для удаления нет.
Если вы хотите удалить строки со значением столбца от 5 до 10, сделайте это без цикла:

db.delete(DbHandler.TABLE_USERS, columnname between ? and ?, new String[]{"5", "10"}); 
1 голос
/ 24 июня 2019

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

SQLiteDatabase db = dbHandler.getWritableDatabase();
db.delete(DbHandler.TABLE_USERS, "_id >= 5 AND _id <= 10", null);
db.close();

или

SQLiteDatabase db = dbHandler.getWritableDatabase();
db.delete(DbHandler.TABLE_USERS, "_id >= ? AND _id <= ?", new String[] {"5", "10"});
db.close();
1 голос
/ 24 июня 2019

Вам нужно передать whereClause и whereArgs

Ex.
delete(String table, String whereClause, String[] whereArgs)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...