从SQLite(Android)删除前18000行时出现问题

时间:2016-02-24 12:53:51

标签: android sqlite

我的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

我哪里错了?

1 个答案:

答案 0 :(得分:4)

使用execSQL()而不是rawQuery()这样的SQL。

rawQuery()只编译SQL,但只有在返回的moveTo..()上调用Cursor个方法之一后才执行它。 execSQL()编译并运行SQL。