Android上的SQLite数据库不能正确存储Int

时间:2013-05-14 16:46:25

标签: android database sqlite

我正在创建一个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);

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

谢谢!

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

1 个答案:

答案 0 :(得分:0)

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

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