如何删除5到10条记录?
我在下面使用了代码,但是所有记录都被删除了。
SQLiteDatabase db = dbHandler.getWritableDatabase();
for (int i = 5; i <= 10; i++) {
db.delete(DbHandler.TABLE_USERS, i+"", null);
}
db.close();
答案 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();