2011-09-04 11 views
0
public public udpateNoteInfo(String text){ 
    ContentValues val = new ContentValues(); 
    val.put(KEY_CONTENT5, text);   

    sqLiteDatabase.update(MYDATABASE_TABLE, val,"ORDER_BY("+KEY_ID+") DESC LIMIT 0,1", new String[]{text}); 
} 

SQLite의 KEY_CONTENT5 열의 마지막 행을 업데이트하려고하는데 오류가 있습니다. 나는 그 실수를 "ORDER_BY("+KEY_ID+") DESC LIMIT 0,1"에 맞춰야 하겠지만, 어떻게 올바른지 모릅니다. 네가 그걸 안다면 나 한테 말해줘. 고맙습니다.SQLite의 마지막 행을 업데이트 할 수 없습니다.

ERROR: 
09-05 11:47:54.769 E/Database(4386): Error updating note=Test using UPDATE PERSONAL_TABLE SET note=? WHERE _id = (SELECT max(_id) FROM PERSONAL_TABLE) 

활동 클래스 :

public void updateNote(String txt) { 
     mySQLiteAdapter = new PersonalSQLiteAdapter(this); 
     mySQLiteAdapter.openToWrite(); 
     cursor = mySQLiteAdapter.queueAll(); 
     if (cursor != null) { 
      mySQLiteAdapter.udpateNoteInfo(txt); 
     } 
     mySQLiteAdapter.close(); 
    } 

SQLiteAdapter 클래스 (안 활동) :

public void udpateNoteInfo(String text) { 
     ContentValues val = new ContentValues(); 
     val.put(KEY_CONTENT5, text); 
     sqLiteDatabase.update(MYDATABASE_TABLE, val, KEY_ID + " = (SELECT max(" 
       + KEY_ID + ") FROM " + MYDATABASE_TABLE + ")", 
       new String[] { text }); 

    } 

답변

3

당신은 업데이트에 의해 주문을 넣을 수 없습니다. 다음과 같이 시도 할 수 있습니다. WHERE id = (SELECT max (id) FROM TABLE) 시퀀스가 ​​수정되지 않는다고 가정하면 마지막 ID를 업데이트 할 수 있습니다.

대신이 하나의 당신의 KEY_ID 값이 고유하지 않은 경우, 당신은 당신의 프라이 머리 키 컬럼 (들)을 사용해야합니다 ...이 행을 ID를 조회하고 업데이트 할 수 있습니다
+0

내가 이런 귀하의 제안 시도 : sqLiteDatabase.update (MYDATABASE_TABLE, 발을, ""+ KEY_ID + "= (최대 SELECT ("+ KEY_ID +") FROM "+ MYDATABASE_TABLE +") ", 새 문자열 [] {텍스트}); 그러나 여전히 오류입니다. – Yoo

+0

여기에 오류를 붙여 넣으십시오. 다른 것으로 연결되었을 수 있습니다. – IncrediApp

+0

위의 편집을 참조하십시오. 나는 어디에서 logcat에 두 배가 있기 때문에 '어디서'놓았는지 잘못 생각합니다. 그러나 여전히 오류입니다. 도와 줘서 고마워. – Yoo

0

...

Cursor cLast = db.query(MYDATABASE_TABLE, [KEY_ID], null, null, null, "ORDER_BY("+KEY_ID+") DESC", "LIMIT 0,1"); 
if (cLast.moveToFirst()) { 
    long lastKey = cLast.getLong(0); // if it's not a long, use the appropriate getter 
    sqLiteDatabase.update(MYDATABASE_TABLE, val, "WHERE KEY_ID=?", lastKey); 
} 
+0

코드를 설명해 주시겠습니까? 나는 cLast와 itemCursor와 같은 변수를 꽤 혼동하고 있는가? 매개 변수가 완료되지 않았습니다? lastKey가하는 일은 할당 된 후에 사용하지 않는 것입니다. 고마워. – Yoo

+0

죄송합니다, 일부 이름/매개 변수를 변경하는 것을 잊어 버렸습니다 ... 방금 편집합니다. – Whiler

2
public void udpateNoteInfo(String text) { 
     ContentValues val = new ContentValues(); 
     val.put(KEY_CONTENT5, text); 
     sqLiteDatabase.update(MYDATABASE_TABLE, val, KEY_ID+" = (SELECT max("+KEY_ID+") FROM "+MYDATABASE_TABLE+")", null); 
    } 

내 최종 답변.

0

UPDATE 테이블 세트 COL = 1 ID가 = (MAX 테이블 (ID)를 선택)

관련 문제