2013-10-25 42 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

您试图在同一查询中使用SELECT执行DELETE。 AFAIK你不应该这样做。您必须首先执行SELECT查询,才能检索所需的ID,然后执行删除操作。换句话说,执行Cursor c = getWritableDatabase().query(),从光标读取ID,然后在getWritableDatabase().delete()中使用它。

另外,在") FROM"之后加一个空格,所以它变成") FROM "以避免语法错误。

+0

SQLiteDatabase db = this.getWritableDatabase();游标cursor = 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

而是缺乏后从空间和子查询必须在括号写:

String maxid = System_id + "=" + 
       "(SELECT MAX("+System_id+") FROM " + TABLE_SYSTEM_SETTINGS + ")";