2013-05-14 98 views
0

我正在創建一個Android應用程序來跟蹤食譜。我能夠成功地存儲和檢索食譜,但我的is_favorite值無法正常工作。當我把我的boolean值(根據CheckBox是否被選中與否),它被正確發送到我的helper.insert功能:Android上的SQLite數據庫沒有正確存儲Int內容

public Recipe insert(String name, boolean isFavorite, String servingSize, String time, String instructions) 
    { 
     ContentValues values = new ContentValues(); 
     values.put("name", name); 
     values.put("is_favorite", (isFavorite) ? 1 : 0); 
     values.put("serving_size", servingSize); 
     values.put("time", time); 
     values.put("instructions", instructions); 

     long id = databaseHelper.getWritableDatabase().insert(DATABASE_TABLE, null, values); 
    } 

當我看着valuesis_favorite是1,如果isFavorite是真實的,0,如果isFavorite是錯誤的,這正是我想要的。

但是,當我爲我剛剛創建的配方做helper.getById(int id)時,無論我在那裏實際放置什麼值,它總是返回0爲is_favorite列。我對這個查詢是非常標準:

SELECT _id, name, is_favorite, serving_size, time, instructions FROM recipes WHERE _id = ? 

這裏是我的表創建腳本:

CREATE TABLE recipes (_id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, is_favorite INTEGER, serving_size TEXT, time TEXT, instructions TEXT); 

任何建議,將不勝感激。如果需要更多信息,請告訴我。

謝謝!

更新:謝謝大家的迴應!我仍然不完全確定問題是什麼,但強制停止後,清除所有數據,並卸載應用程序,然後重新安裝它,它工作得很好...

+0

P.S.我在數據庫中還有其他具有'INTEGER'數據類型的表,這些工作正常,所以我完全不知道爲什麼這個不行! – Caitlin 2013-05-14 16:47:19

+0

這看起來對我來說是正確的。我不確定爲什麼它會失敗,如果沒有更深入的瞭解。什麼是「select *」return(而不是調出列的具體名稱) – 2013-05-14 16:58:16

+0

is_favorites仍然返回0 :( – Caitlin 2013-05-14 17:15:23

回答

0

這聽起來像你的問題是插入功能然後。你確定DATABASE_TABLE是你選擇的桌子嗎?我也會嘗試,並將「is_favorite」的名稱更改爲其他名稱,並查看行爲是否持續存在,我們會得到不同的結果。我有奇怪的問題,「隱藏的」字符混淆了字符串。有時更改某些東西的名稱也會消除任何衝突。

這也是爲你的密鑰使用常量的好理由(而不是硬編碼密鑰)