我正在创建一个Android应用程序来跟踪食谱。我能够成功存储和检索配方,但我的is_favorite
值无法正常工作。当我发送boolean
值时(根据是否选中CheckBox
),它会被正确发送到我的helper.insert
函数:
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);
}
当我查看values
时,is_favorite
如果isFavorite
为真则为1,如果isFavorite
为假则为0,这正是我想要的。
但是当我为我刚刚创建的配方执行helper.getById(int id)
时,无论我实际放在那里的值是什么,它总是为is_favorite
列返回0。我对此的查询非常标准:
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 :(得分:0)
听起来你的问题是插入功能。您确定DATABASE_TABLE
是您选择的表格吗?我还要进行实验,并将“is_favorite
”的名称更改为其他内容,看看行为是否仍然存在,我们会得到不同的结果。我有一些奇怪的问题,其中“隐藏”字符搞乱了字符串。有时更改某些内容的名称也会消除任何冲突。
这也是为键使用常量的一个很好的理由(而不是硬编码键)