0

レシピを追跡する Android アプリケーションを作成しています。レシピを正常に保存および取得できますが、is_favorite値が正しく機能しません。boolean( a がチェックされているかどうかに基づいて) 値を送信すると、関数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、が true のis_favorite場合は 1で、 false の場合は 0 です。これはまさに私が望むものです。isFavoriteisFavorite

しかし、作成したばかりのレシピに対して a を実行すると、実際に入力した値に関係なく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);

どんな提案でも大歓迎です。さらに情報が必要な場合は、お知らせください。

ありがとう!

更新: 返信ありがとうございます。何が問題だったのかはまだ完全にはわかりませんが、アプリを強制停止し、すべてのデータを消去し、アプリをアンインストールしてから再インストールした後、問題なく動作しました...

4

1 に答える 1

0

あなたの問題は挿入機能のようです。それDATABASE_TABLEが選択しているテーブルでよろしいですか? また、実験して " is_favorite" の名前を別の名前に変更し、動作が持続するかどうかを確認して、別の結果が得られるかどうかを確認します。「隠し」文字が文字列を台無しにするという奇妙な問題がありました。何かの名前を変更すると、競合も解消されることがあります。

これは、(ハードコードされたキーの代わりに) キーにも定数を使用する正当な理由です。

于 2013-05-14T17:31:28.170 に答える