Android上的SQLite数据库没有正确存储Int内容

Android上的SQLite数据库没有正确存储Int内容

问题描述:

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

这听起来像你的问题是插入功能然后。你确定DATABASE_TABLE是你选择的桌子吗?我也会尝试,并将“is_favorite”的名称更改为其他名称,并查看行为是否持续存在,我们会得到不同的结果。我有奇怪的问题,“隐藏的”字符混淆了字符串。有时更改某些东西的名称也会消除任何冲突。

这也是为你的密钥使用常量的好理由(而不是硬编码密钥)