3

プログラムのデータベースへの入力に問題がContentValuesあり、理解するのが非常に難しいことがわかっています。約 50 個のエントリを追加するContentValuesオブジェクトがあり、「null」として保存されている 1 つのエントリを除いて、すべてがうまく機能します。LogCat の出力に基づいて、に入るデータがContentValuesnull ではないことがわかります。

関連するコード:

if (database.isOpen() && !database.isReadOnly()) { //Check that the database is open and not read only
    Log.d(TAG, "Entry string: " + data.getEntryString());
    Log.d(TAG, "Key: " + Helper.COLUMN_ENTRY_STRING);

    ContentValues values = new ContentValues(); //Create a new ContentValues object to store key value pairs for insertion
    //Various values.put() calls...
    values.put(Helper.COLUMN_ENTRY_STRING, data.getEntryString()); //Should put the String "Something"

    Log.d(TAG, "Entry string from values: " + values.getAsString(Helper.COLUMN_ENTRY_STRING));
    //Proceed with database insert here
}

LogCat の応答:

07-27 08:58:47.909: D/Handler(18020): Entry string: Something 
07-27 08:58:47.909: D/Handler(18020): Key: Entry_String 
07-27 08:58:47.909: D/Handler(18020): Entry string from values: null

コードを何度も確認しましたが、これについての説明が見つかりません。どんな助けでも大歓迎です。

4

2 に答える 2

2

私もこの問題を抱えていました。

私の場合はContentValue、単体テストで使用したためです。ContentValueはAndroidコンポーネントであり、Android環境で使用する必要がありますが、Android実装を持たない単体テストで使用しました。したがって、contentValue.put(key, value)andを呼び出したときcontentValue.get(key)、空の実装のために何も起こりませんでした。

コードを単体テストで実行するか、アンドロイド実装なしで実行するかはわかりません。多分私の解決策はあなたにいくつかのアイデアを与えることができます.

于 2016-01-08T07:57:08.527 に答える
0

さて、これはまだ私を悩ませています。だから私の頭の中で私は戻ってきput(String, String)ます。次のことを試してみて、私の心を和らげることができますか?

if (database.isOpen() && !database.isReadOnly()) {
    Log.d(TAG, "Entry string: " + data.getEntryString());
    Log.d(TAG, "Key: " + Helper.COLUMN_ENTRY_STRING);

    String entryKey = Helper.COLUMN_ENTRY_STRING;
    String entryValue = data.getEntryString();
    ContentValues values = new ContentValues();
    values.put(entryKey, entryValue);

    Log.d(TAG, "Entry string from values: " + values.getAsString(Helper.COLUMN_ENTRY_STRING));
}
于 2012-07-27T17:09:15.913 に答える