ContentValues条目正在转换为NULL

时间:2012-07-27 16:10:30

标签: android sqlite

我在ContentValues输入我的程序中的数据库时遇到了一些麻烦,这个数据被证明很难理解。我有一个ContentValues对象,我添加大约50个左右的条目,一切都很好,除了一个存储为“null”的条目。根据LogCat输出,我知道进入ContentValues的数据不为空。

相关代码:

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

我已多次查看代码,但我找不到任何解释。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

我也有这个问题。

我的理由是因为我在单元测试中使用了ContentValueContentValue是一个android组件,它应该在android环境下使用,但我在单元测试中使用它,它没有android实现。因此,当我调用contentValue.put(key, value)contentValue.get(key)时,由于空的实现,没有任何事情发生。

我不确定您是否在单元测试中运行代码或其他没有Android实现的代码。也许我的解决方案可以给你一些想法。

答案 1 :(得分: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));
}