Android SQLite如何限制删除

Android SQLite how to delete with limit

我只想从我的数据库中删除一行 table User.

我试过this,但我不知道如何使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT

这是我的代码:

    SQLiteDatabase sqLiteDatabase = this.openOrCreateDatabase("User", MODE_PRIVATE, null);

        //sqLiteDatabase.execSQL("INSERT INTO user (name, age) VALUES ('jihyo', 10)");

        sqLiteDatabase.execSQL("DELETE FROM user WHERE name ='jihyo' LIMIT 1");
        Cursor c = sqLiteDatabase.rawQuery("SELECT * FROM user WHERE name = 'jihyo'", null);
        int nameIndex = c.getColumnIndex("name");
        int ageIndex = c.getColumnIndex("age");

        c.moveToFirst();
        do {
            Log.v("name", c.getString(nameIndex));
            Log.v("age", c.getString(ageIndex));
        } while (c.moveToNext());

这是错误:

android.database.sqlite.SQLiteException: near "LIMIT": syntax error (code 1): , while compiling: DELETE FROM user WHERE name ='jihyo' LIMIT 1

试试这个:

db.execSQL("Delete from user where user_id IN (Select user_id from user where name = 'jihyo' limit 1)");

[更新]:= 不适用于 LIMIT 操作,因此您需要像这样:

Cursor c = db.execSQL("Select user_id from user where name = 'jihyo' limit 1");
        if (c.moveToFirst()){
            String id = c.getString(0);
            db.execSQL("Delete from user where user_id = "+id);
        }

您不能在删除查询中应用限制,因为 DELETE Clause 没有 LIMIT 所以你可以 Select 使用 SELECT 查询单个记录并在基础上应用 DELETE 所选查询 例如。

DELETE FROM user WHERE id IN
 (SELECT id FROM user
 WHERE name = 'jihyo'
 LIMIT 1);

注意:您可以使用'='代替'IN'