2013-10-25 4 views
0

Я разрабатываю приложение для Android, где я хочу удалить последнюю строку в одной из моей таблицы базы данных. Я пробовал код ниже, но он бросает синтаксическую ошибку.Удалить последнюю строку в таблице SQLite android

public void deletelatestprofilefromsystemsettings() 
{ 
    String maxid = System_id + "="+"SELECT MAX ("+System_id+") FROM" +TABLE_SYSTEM_SETTINGS; 
    getWritableDatabase().delete(TABLE_SYSTEM_SETTINGS, maxid ,null); 
} 

Помогите! Благодаря!

+0

какой ошибки, и где? Извините, я не телепат ... –

ответ

-1

Вы пытаетесь выполнить DELETE с помощью SELECT в том же запросе. AFAIK, вы не должны этого делать. Сначала вы должны выполнить запрос SELECT, чтобы получить желаемый идентификатор, а затем выполнить удаление. Другими словами, выполните Cursor c = getWritableDatabase().query(), прочитайте идентификатор из курсора, затем используйте его в getWritableDatabase().delete().

Кроме того, добавьте пробел после ") FROM", поэтому он становится ") FROM " во избежание синтаксической ошибки.

+0

SQLiteDatabase db = this.getWritableDatabase(); \t \t Курсор курсор = db.rawQuery ("SELECT MAX (" + System_id + ") FROM" + TABLE_SYSTEM_SETTINGS, null); \t \t getWritableDatabase(). Delete (TABLE_SYSTEM_SETTINGS, cursor.getString (0), null); – Dave

+0

Правильно ли указан этот вопрос? – Dave

+0

Неплохо, хотя я думаю, что 'MAX (column)' возвращает числовое значение, а не строку. Также я бы сохранил 'cursor.getString (0)' (или 'cursor.getInt (0)' в этом отношении) в отдельной переменной и сразу же выполнить 'cursor.close()' немедленно. – Piovezan

1

Вы не хватает пробел после FROM и подзапросов должны быть записаны в скобках:

String maxid = System_id + "=" + 
       "(SELECT MAX("+System_id+") FROM " + TABLE_SYSTEM_SETTINGS + ")"; 
Смежные вопросы