如何在Android的sqlite中删除5到10条记录?

时间:2019-06-24 12:52:01

标签: android sqlite

如何删除5到10条记录?

我在下面使用了代码,但是所有记录都被删除了。

SQLiteDatabase db = dbHandler.getWritableDatabase();

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

3 个答案:

答案 0 :(得分:2)

您的循环实际上在做什么:

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,因此它将删除所有行,并且所有后续迭代都执行相同操作,但是没有要删除的行。 br /> 如果要删除5列到10列之间的行,请执行以下操作:

db.delete(DbHandler.TABLE_USERS, columnname between ? and ?, new String[]{"5", "10"}); 

答案 1 :(得分:1)

您需要传递whereClause和whereArgs

Ex.
delete(String table, String whereClause, String[] whereArgs)

答案 2 :(得分:1)

假设行号存储在列_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();