2010-08-15 54 views
2

我在UPDATE之後的「D」下面收到「無效的字符常量」。有任何想法嗎? ORIGINAL:如何用另一個表的數量更新表的字段? SQLite,Java,Android

 
public Cursor fetchAllJournals(String sort) { 

      mDb.rawQuery(UPDATE 'DATABASE_JOURNAL_TABLE' 
SET 'KEY_JOURNAL_NOTES' = 
(SELECT COUNT(*) FROM 'DATABASE_HOMES_TABLE' 
WHERE 'DATABASE_JOURNAL_TABLE'.'KEY_JROWID' = 'DATABASE_HOMES_TABLE'.'KEY_HOME_JOURNALID') 
) 
return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, 
KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null); 
     } 

解答:

 
public Cursor fetchAllJournals(String sort) { 
      mDb.execSQL("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" " + 
        " = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+" WHERE " 
        +DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" = "+DATABASE_HOMES_TABLE +"." + KEY_HOME_JOURNALID+")"); 

      return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, 
        KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null); 
     } 

回答

0

無效字符在這種情況下是常數 'DATABASE_JOURNAL_TABLE'。 Java中的單引號定義了字符常量,即一個字符,例如, 'a'或'b'或'!'。 'DATABASE_JOURNAL_TABLE'是一串字符串,因此您必須使用字符串文字和雙引號,即「前綴」+ DATABASE_JOURNAL_TABLE +「後綴」。

試試這個:

public Cursor fetchAllJournals(String sort) { 

mDb.rawQuery("UPDATE "+DATABASE_JOURNAL_TABLE+" SET "+KEY_JOURNAL_NOTES+" = (SELECT COUNT(*) FROM "+DATABASE_HOMES_TABLE+"WHERE "+DATABASE_JOURNAL_TABLE+"."+KEY_JROWID+" =+"DATABASE_HOMES_TABLE"+."+KEY_HOME_JOURNALID+")"); 

return mDb.query(DATABASE_JOURNAL_TABLE, new String[] {KEY_JROWID, KEY_JOURNAL_TITLE, KEY_JOURNAL_NOTES, KEY_JDATE},null , null, null, null, sort ,null); 
} 
+0

我認爲這是接近,我改變rawQuery到execSQL和一些格式上的錯誤。我現在有一個SQLite異常。我已經更新了上面的代碼。 – Brian 2010-08-15 18:23:50

+0

你錯過了一個結束)從您的查詢。結束)標記選擇查詢的結束。 – Pentium10 2010-08-15 18:40:20

+0

就是這樣。謝謝您的幫助。非常感激。 – Brian 2010-08-15 18:55:54

相關問題