0

我正在创建一个 Android 应用程序来跟踪食谱。我能够成功存储和检索食谱,但我的is_favorite值无法正常工作。当我发送我的boolean值(基于是否CheckBox检查 a )时,它会正确发送到我的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则为 1 isFavorite,如果为假,则为 0 isFavorite,这正是我想要的。

但是当我helper.getById(int id)为我刚刚创建的配方做 a 时,它总是为该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);

任何建议将不胜感激。如果需要更多信息,请告诉我。

谢谢!

更新:感谢大家的回复!我仍然不完全确定问题出在哪里,但是在强制停止、清除所有数据并卸载应用程序然后重新安装后,它运行良好......

4

1 回答 1

0

听起来你的问题是插入功能。你确定那DATABASE_TABLE是你选择的桌子吗?我也会进行实验,并将“ is_favorite”的名称更改为其他名称,看看行为是否仍然存在,我们会得到不同的结果。我遇到了奇怪的问题,其中“隐藏”字符弄乱了字符串。有时更改某些东西的名称也会消除任何冲突。

这也是为您的键使用常量的一个很好的理由(而不是硬编码的键)

于 2013-05-14T17:31:28.170 回答