我的Android应用程序数据库是这样创建的:
String CREATE_TABLE_GYRO = "CREATE TABLE gyro ( " +
"id INTEGER PRIMARY KEY AUTOINCREMENT, " +
"timestamp BIGINT NOT NULL, " +
"x FLOAT NOT NULL, " +
"y FLOAT NOT NULL, " +
"z FLOAT NOT NULL)";
我想删除数据库中的前18000个条目。我使用以下代码和查询执行此操作:
SQLiteDatabase database = this.getWritableDatabase();
System.out.println("Database size before delete: " + getSize());
database.rawQuery("DELETE FROM gyro WHERE id IN(SELECT id FROM gyro ORDER BY id ASC LIMIT 18000)", null);
System.out.println("Database size after delete: " + getSize());
然而,似乎没有任何事情发生。这是输出:
Database size before delete: 10665984
Database size after delete: 10665984
我哪里错了?
答案 0 :(得分:4)
使用execSQL()
而不是rawQuery()
这样的SQL。
rawQuery()
只编译SQL,但只有在返回的moveTo..()
上调用Cursor
个方法之一后才执行它。 execSQL()
编译并运行SQL。