2010-07-30 32 views
0

我試圖得到一個查詢,只返回具有指定名稱的行,並按星期(整數)降序排序。SQLITE通過導致錯誤的選擇和排序

每次我嘗試運行它,它給了我一個FC和logcat的說

ERROR/AndroidRuntime(728):android.database.sqlite.SQLiteException:沒有這樣的列:新:,編譯時:SELECT名稱,本週,共有來自筆記,其中name =新秩序WeekDESC LIMIT 10

public Cursor graphQuery(String name){ 
    return mDb.query(DATABASE_TABLE, new String[] {KEY_NAME, 
      KEY_WEEK, KEY_TOTAL}, KEY_NAME + "=" + name, null, null, null, KEY_WEEK + "DESC","10"); 
} 

它說,不存在這樣的列,它沒有任何意義,因爲它應該排在尋找的名稱和返回匹配的。此外,如果我把KEY_NAME +「=」+名稱設置爲null,則表示沒有這樣的列WeekDESC,因爲它只是按整數排序,所以沒有意義。

我已經得到了這個代碼工作之前,但我錯了它,似乎無法讓它再次工作......這是越來越沮喪,任何幫助非常感謝!

回答

0

如果通過搜索字符串,你應該使用一個問號作爲佔位符,即

return mDb.query(DATABASE_TABLE, new String[] {KEY_NAME, 
      KEY_WEEK, KEY_TOTAL}, KEY_NAME + "=?", new String[] { name }, null, null, null, KEY_WEEK + "DESC","10"); 

否則如果名稱中包含空格或特殊字符會破。 (如果你真的不想要你的問號,你需要把字符串放在引號或雙引號中,但使用問號更加優雅和安全。)

此外:沒有「DESC」和你正在排序的鍵之間的空格。使用「DESC」。

+0

真棒!有用!非常感謝!我記得現在你需要「=?」 – Cameron 2010-07-30 22:50:19