我在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
我已多次查看代码,但我找不到任何解释。任何帮助将不胜感激。
答案 0 :(得分:2)
我也有这个问题。
我的理由是因为我在单元测试中使用了ContentValue
。 ContentValue
是一个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));
}