2013-10-25 4 views
0

내 데이터베이스 테이블 중 하나에서 마지막 행을 삭제할 Android app을 개발 중입니다. 아래 코드를 시도했지만 구문 오류가 발생했습니다.테이블의 마지막 행 삭제 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 당신은 그것을해서는 안됩니다. 원하는 ID를 검색하기 위해 먼저 SELECT 쿼리를 실행 한 다음 삭제를 실행해야합니다. 즉, Cursor c = getWritableDatabase().query()을 실행하고 커서에서 ID를 읽고 getWritableDatabase().delete()에 사용하십시오.

또한 ") FROM" 뒤에 공백을 추가하므로 구문 오류가 발생하지 않도록 ") FROM "이됩니다.

+0

SQLiteDatabase db = this.getWritableDatabase(); \t \t 커서 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

당신은 FROM 애프터 공간이 부족하고, 하위 쿼리는 괄호 안에 작성해야합니다 :

String maxid = System_id + "=" + 
       "(SELECT MAX("+System_id+") FROM " + TABLE_SYSTEM_SETTINGS + ")"; 
관련 문제